没有使用htonl()带来的问题

简述:
  将主机的无符号长整形数转换成网络字节顺序。
  #include <winsock2.h>
  u_long PASCAL FAR htonl( u_long hostlong);
  hostlong:主机字节顺序表达的32位数。
  注释:
  本函数将一个32位数从主机字节顺序转换成网络字节顺序。
  返回值:
  htonl()返回一个网络字节顺序的值。



问题:
在编程中

SOCKADDR_IN sa;
sa.sin_family=AF_INET;
//设置电线连接服务器端的端口
sa.sin_port = htons(80); 
//主机名地址 
sa.sin_addr.S_un.S_addr =  INADDR_ANY;

因为INADDR_ANY没有经过htonl()函数转换,导致通过IP地址请求返回结果很快,用localhost(域名)方式请求反回很慢。

应改为

SOCKADDR_IN sa;
sa.sin_family=AF_INET;
//设置电线连接服务器端的端口
sa.sin_port = htons(80); 
//主机名地址 
sa.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

上一篇: _fullpath得到绝对路径   下一篇: VC6在界面开发上加一条横线

提交疑问

回顶部