如果您无法下载资料,请参考说明:
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_INETcharsa_data[14];//仅仅表示要求一块内存分配区,起到占位的作用,该区域中指定与协议相关的具体地址信息};由于实际要求的只是内存区,所以对于不同的协议家族,用不同的结构来替换sockaddr。除了sa_family外,sockaddr是按网络字节顺序表示的。在基于TCP/IP的socket编程过程中,可以用sockaddr_in结构替换sockaddr,以方便我们填写地址信息。5、关于SOCKADDR_IN结构体structsockaddr_in{shortsin_family;//地址族,对于IP地址,该成员一直是AF_INETunsignedshortsin_port;//将要分配给套接字的端口IN_ADDRsin_addr;//套接字的主机IP地址charsin_zero[8];//一个填充数,以使sockaddr_in结构和sockaddr结构的长度一样};sockaddr_in结