预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

网络编程 一、WSAStartup函数 1、功能 加载套接字库并确定将要使用的socket版本。 2、语法 intWSAStartup( WORDwVersionRequested,//指定准备加载的Winsock库的版本。高位字节指定所需要的Winsock库的副版本,而低位字节则是主版本。通常版本号为:2.1,其中2就是主版本号,1就是副版本号。可以利用MAKEWORD(x,y)宏(其中x是高位字节,y是低位字节)方便地获取该参数的正确值。 LPWSADATAlpWSAData//[out]指向WSADATA结构体的指针,该函数用其加载的库版本有关的信息填在这个结构体中。 ); 3、返回 返回值描述0成功WSASYSNOTREADY底层网络子系统没有为网络通信做好准备WSAVERNOTSUPPORTEDWindows套接字库不能提供所需的版本WSAEINPROGRESSWindowsSockets1.1正在进程中运行WSAEPROCLIMWindows套接字库所支持的任务量已经达到最大限制WSAEFAULTlpWSAData是一个无效指针4、关于WSADATA结构体 typedefstructWSAData{ WORDwVersion;//打算使用的Winsock版本 WORDwHighVersion;//现有的Winsock库的最高版本 charszDescription[WSADESCRIPTION_LEN+1];//由特定的Winsock实施方案设定(无用) charszSystemStatus[WSASYS_STATUS_LEN+1];//由特定的Winsock实施方案设定(无用) unsignedshortiMaxSockets;//同时最多可打开的套接字数(不用) unsignedshortiMaxUdpDg;//数据包的最大长度(不用) charFAR*lpVendorInfo;//指定厂商的预留信息(不用) }WSADATA,*LPWSADATA; 二、WSACleanup函数 1、功能 释放为应用程序分配的资源,终止对WinSock动态库的使用。 2、语法 intWSACleanup(void); 3、返回 返回值描述0成功SOCKET_ERROR失败 三、socket函数 1、功能 创建套接字 2、语法 SOCKETsocket( intaf,//指定地址族,对于TCP/IP协议的套接字,它只能是AF_INET(也可以写成PF_INET) inttype,//指定Socket类型,对于1.1版本的Socket,它只支持两种类型的套接字,SOCK_STREAM指定产生流式套接字,SOCK_DGRAM产生数据包套接字 intprotocol//指定特定的地址家族相关的协议,如果指定为0,那么系统就会根据地址格式和套接字类别,自动选择一个合适的协议 ); 3、返回 返回值描述返回一个新的SOCKET数据类型的套接字描述符成功INVALID_SOCKET失败 四、bind函数 1、功能 将指定的套接字绑定到本地的某个地址和端口上。 2、语法 intbind( SOCKETs,//指定要绑定的套接字 conststructsockaddr*name,//指定该套接字的本地地址信息,它是一个指向sockaddr结构体的指针变量,由于该地址结构是为所有的地址家族准备的,所以该结构体可能随所使用的网络协议不同而不同 intnamelen//指定该地址结构的长度 ); 3、返回 返回值描述0成功SOCKET_ERROR失败4、关于SOCKADDR结构体 structsockaddr{ unsignedshortsa_family;//指定地址家族,对于TCP/IP协议的套接字,必须设置为AF_INET charsa_data[14];//仅仅表示要求一块内存分配区,起到占位的作用,该区域中指定与协议相关的具体地址信息 }; 由于实际要求的只是内存区,所以对于不同的协议家族,用不同的结构来替换sockaddr。除了sa_family外,sockaddr是按网络字节顺序表示的。在基于TCP/IP的socket编程过程中,可以用sockaddr_in结构替换sockaddr,以方便我们填写地址信息。 5、关于SOCKADDR_IN结构体 structsockaddr_in{ shortsin_family;//地址族,对于IP地址,该成员一直是AF_INET unsignedshortsin_port;//将要分配给套接字的端口 IN_ADDRsin_addr;//套接字的主机IP地址 charsin_zero[8];//一个填充数,以使sockaddr_in结构和sockaddr结构的长度一样 }; sockaddr_in结