IP中,计算机都分配有一个IP地址,用一个32位数来表示,正式的称呼是“IPV4地址”。Winsock中,应用通过SOCKADDR_IN结构来指定IP地址和服务器端口信息,该结构的格式如下:
struct sockaddr_in
{
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
sin_family 必须为AF_INET,以告知winsock我们此时正在使用IP地址家族
下面四个API函数将一个数从主机字节顺序转换成网络字节顺序
u_long htonl(u_long hostlong);
int WSAHtonl(
SOCKET S,
u_long hostlong,
u_long FAR* lpnetlong
);
u_short htons(u_short hostshort);
int WSAHtons(SOCKET s,u_short hostshort,u_short FAR* lpnetshort);
下面四个API是前面四个的反向函数,他们把网络字节顺序转换成主机字节顺序
u_long ntonl(u_long netlong);
int WSANtonl(
SOCKET S,
u_long netlong,
u_long FAR* lphostlong
);
u_short ntons(u_short netshort);
int WSANtons(SOCKET s,u_short netshort,u_short FAR* lphostshort);
示例:
SOCKADDR_IN InternetAddr;
INT nPortID=5150;
InternetAddr.sin_family=AF_INET;
InternetAddr.sin_addr.s_addr=inet_addr("136.149.3.29");
InternetAddr.sin_port=htons(nPortId);