ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.WIN32COM.v10.en/winsock/winsock/ntohl_2.htm
详细查看上面的msdn上解释
首先是我们在socket编程中经常要涉及端口号啊,IP地址啊,就会涉及主机字节和网络字节的转换,
而这里一般来说端口号是16位的,IP地址是32位的,但msdn提供了4个转换函数,分别用于16 和32位的网络地址和主机地址的转换。
他们是ntohl(u_long),ntohs(u_short),htonl(u_long),htons(u_short)4种,让我们来看下函数名的意义,
n 代表 tcp/ip network byte order
h 代表 host byte order (which is little-endian on Intel processors).
s 代表 u_short
l 代表 u_long
to自然代表转换的意思啦~~
inet_addr()
简述:将一个点间隔地址转换成一个in_addr。
#include <winsock.h>
unsigned long PASCAL FAR inet_addr( const struct FAR* cp);
cp:一个以Internet标准“.”间隔的字符串。
注释:
本函数解释cp参数中的字符串,这个字符串用Internet的“.”间隔格式表示一个数字的Internet地址。返回值可用作Internet地址。所有Internet地址以网络字节顺序返回(字节从左到右排列)。
Internet地址用“.”间隔的地址可有下列几种表达方式:
a.b.c.d,a.b.c,a.b,a
当四个部分都有定值时,每个都解释成一个字节数据,从左到右组成Internet四字节地址。请注意,当一个Internet地址在Intel机器上表示成一个32位整型数时,则上述的字节为“d.c.b.a”。这是因为Intel处理器的字节是从右向左排列的。
inet_ntoa()
简述:
将网络地址转换成“.”点隔的字符串格式。
#include <winsock.h>
char FAR* PASCAL FAR inet_ntoa( struct in_addr in);
in:一个表示Internet主机地址的结构。
注释:
本函数将一个用in参数所表示的Internet地址结构转换成以“.” 间隔的诸如“a.b.c.d”的字符串形式。请注意inet_ntoa()返回的字符串存放在WINDOWS套接口实现所分配的内存中。应用程序不应假设该内存是如何分配的。在同一个线程的下一个WINDOWS套接口调用前,数据将保证是有效。