Windows网络编程之WinSock编程基础

来源:互联网 发布:软件测试缺陷分析报告 编辑:程序博客网 时间:2024/04/28 07:35

更多精彩内容,请见:http://www.16boke.com


by zxy,Java/C++编程交流群:168424095

(1)WSAStartup()函数用于初始化Windows Sockets,并返回WSADATA结构体。只有调用WSAStartup()函数后,应用程序才能调用其他WindowsSockets API函数,实现网络通信。

函数原型:

intWSAStartup(

INWORD wVersionRequested,//Windows Sockets DLL规定调用者可以使用的WindowsSockets规范的版本,为WORD类型。高位字节中存储副版本号,低位字节中存储高版本号。可以使用MAKEWORD()函数返回该值。

OUTLPWSADATA lpWSAData//指向WSADATA结构体的指针,用于接收Windows Sockets执行的数据

)

成功返回0

(2)IP地址的表示形式

(2.1)网络字节顺序格式 TCP/IP规定,低位存储地址中保存数据的高位字节,数据传输顺序是由高位至低位进行的。

用结构体in_addr来保存网络字节顺序格式的IP地址,定义如下:

structin_addr{

union{

struct{u_chars_b1,s_b2,s_b3,s_b4;} S_ub_b;//由4个u_char组成的主机格式IP地址

struct{u_shorts_w1,s_w2;}S_un_w;//由2个u_short组成的主机格式IP地址

u_longS_addr;//以u_long变量表示的主机格式IP地址

}S_un;

inet_addr()inet_ntoa()实现点分法IP地址字符串和网络字节顺序格式IP地址之间的转换

inet_addr()将点分法IP地址字符串转换为in_addr结构体中的IP地址格式,函数原型:

unsignedlong inet_addr(

constchar* cp//点分法IP地址字符串

);

正确,返回unsignedlong类型的网络字节顺序格式IP地址,错误返回INADDR_NONE

inet_ntoa()in_addr结构体中IP地址转换为点分法IP地址字符串,函数原型:

charFAR* inet_ntoa(

structin_addr in//要进行转换的IP地址

);

返回char*类型的IP地址。

 

(2.2)主机字节顺序格式

htonl()htos()ntohl()htohs()实现主机字节顺序格式和网络字节顺序格式的转换。

htonl()u_long类型的主机字节顺序格式IP地址转换为TCP/IP网络字节顺序格式,函数原型:u_long htonl(u_longhostlong);

htons()u_short类型的主机字节顺序格式IP地址转换为TCP/IP网络字节顺序格式,函数原型:u_short htons (u_short hostshort);

 

ntohl()u_long类型的TCP/IP网络字节顺序IP地址转换为格式主机字节顺序格式,函数原型:u_longntohl (u_long netlong);

 

ntohs()u_short类型的TCP/IP网络字节顺序IP地址转换为格式主机字节顺序格式,函数原型:u_shortntohs (u_ short netlong);


更多精彩内容,请见:http://www.16boke.com


原创粉丝点击