C/C++ 网络编程字节序的问题
htons和ntohs这两函数是不是,客户跟服务机之间,主机发送出去要用htons转成网络字节顺,而服务如果接收要用ntohs,这样配对使用?还有,在socket中,设置...
htons和ntohs
这两函数是不是,客户跟服务机之间,主机发送出去要用htons转成网络字节顺,而服务如果接收要用ntohs,这样配对使用?
还有,在socket中,设置端口,为什么服务端跟客户端都用htons
sockaddr_in servaddr;
servaddr.sin_port = htons(5555); 展开
这两函数是不是,客户跟服务机之间,主机发送出去要用htons转成网络字节顺,而服务如果接收要用ntohs,这样配对使用?
还有,在socket中,设置端口,为什么服务端跟客户端都用htons
sockaddr_in servaddr;
servaddr.sin_port = htons(5555); 展开
2个回答
展开全部
恩。基本上是这个意思。
htons表示short类型的数据由主机字节序转为网络字节序。而ntohs表示是网络字节序转换到主机字节序。
因为历史的原因网络字节序约定为大端(bigedian),而主机字节序位则依据CPU的类型各有不同,我们普通的intel处理器为小端,而powerpc等一些处理器则是大端。那么从主机出去的数据到网络上例如是INTEL,那是要转换的。所以你这个无论是服务器还是客户端,只要是出去的数据都是要经过htonxx这样的函数转换。如果是接收呢,则是要通过ntohxx这样的函数转换的。
设置端口由于是面向网络操作,所以也是要使用htons转换的。
htons表示short类型的数据由主机字节序转为网络字节序。而ntohs表示是网络字节序转换到主机字节序。
因为历史的原因网络字节序约定为大端(bigedian),而主机字节序位则依据CPU的类型各有不同,我们普通的intel处理器为小端,而powerpc等一些处理器则是大端。那么从主机出去的数据到网络上例如是INTEL,那是要转换的。所以你这个无论是服务器还是客户端,只要是出去的数据都是要经过htonxx这样的函数转换。如果是接收呢,则是要通过ntohxx这样的函数转换的。
设置端口由于是面向网络操作,所以也是要使用htons转换的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询