htonl/htons与inet_addr的区别

shaowenhua86 2009-11-12 09:25:40
htonl/htons与inet_addr的区别,在设地址时例如:local.sin_addr.s_addr = htonl(ServerIP);/server.sin_addr.S_un.S_addr = inet_addr(ServerIP);
有什么区别?
...全文
1242 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
today513 2011-04-20
  • 打赏
  • 举报
回复
也就是说
inet_addr("255.255.255.255")

htonl(0xffffffff)
是等价的
wchnjstar 2009-11-13
  • 打赏
  • 举报
回复
都可以啊,但inet_addr的参数是字符串,返回值是网络字节序,htonl的参数是32bit的ip,并且是主机字节序
Conry 2009-11-12
  • 打赏
  • 举报
回复
inet_addr(ServerIP); 是把字符串形式的ip转化为整数,转化后就是网络字节序
htonl(ServerIP);就是整数的ip转化为网络字节序

第二种一般用的比较少,
chehw 2009-11-12
  • 打赏
  • 举报
回复
在网络传输中network byte order采用big-endian序,对于0x0A0B0C0D,传输顺序就是0A 0B 0C 0D;

而host byte order与CPU架构有关,
intel x86架构CPU为little-endian, host byte order为0D 0C 0B 0A;
Motorlola/PowerPC/SPARC等CPU为big-endian.

因为无法确定相互通讯的两台PC是否拥有相同的CPU架构,因而用htonl/htons来统一网络编程中字(WORD)或双字(DWORD)的字节传输顺序,确保两端均可按正确的方式来进行处理

18,358

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧