版权声明:本文为博主原创文章,未经博主允许不得转载。
winsock2版的函数 加了WSA 前缀
且前者是阻塞模式, 后者是非阻塞模式。
若想设置前者为非阻塞模式
u_long mode = 1;
ioctlsocket(sendsocket,FIONBIO,&mode); //mode为非零是:非阻塞模式,为零是:阻塞模式
sento(sendSocket,sendData,strlen(sendData),0,(LPSOCKADDR)&desAddr,sizeof(desAddr));//发送数据
》》》 Windows扩展函数说明
Windows Socket规范提供了一组基于Berkeley套接字函数的扩展函数。
这些扩展函数在实现Socket功能的基础上,还允许基于消息或函数进行处理,处理异步网络事件,开启重叠I/O功能。除了WSAStartup()函数和WSACleanup()函数外,编写Socket程序可以不使用这些扩展API函数,但是建议使用这些扩展函数以保持与Windows编程模式一致。
表16-3中列出了有关Socket的Windows扩展函数。
表16-3 有关Socket的Windows扩展函数
Windows扩展函数 | 功 能 |
WSAAccept() | accept()函数的扩展版本, 允许条件接收和Socket分组 |
WSAAsyncGetHostByAddr() | 根据地址异步获取主机,基于消息实现 |
WSAAsyncGetHostByName() | 根据名称异步获取主机,基于消息实现 |
WSAAsyncGetProtoByName() | 根据名称异步获取协议信息,基于消息实现 |
WSAAsyncGetProtoByNumber() | 根据协议号异步获取协议信息,基于消息实现 |
WSAAsyncGetServByName() | 根据服务器名称和端口号,异步 获取服务器信息,其是基于消息实现的 |
WSAAsyncGetServByPort() | 根据端口号和协议,异步获取服 务器信息,其是基于消息实现的 |
WSAAsyncSelect() | 实现异步版本的select()函数 |
WSACancelAsyncRequest() | 取消异步获取系列的函数,即取消 WSAAsyncGetXByY()函数 |
WSACleanup() | 退出底层的Windows Socket DLL的引用 |
WSACloseEvent() | 销毁事件对象 |
WSAConnect() | Connect()函数的扩展版本,允许交换 连接数据和QOS标准 |
WSACreateEvent() | 创建事件对象 |
WSADuplicateSocket() | 复制Socket |
WSAEnumNetworkEvents() | 枚举网络事件 |
WSAEnumProtocols() | 枚举当前系统中每个有效的协议信息 |
WSAEventSelect() | 连接网络事件和事件对象 |
WSAGetLastError() | 获取最近的Windows Socket错误信息 |
WSAGetOverlappedResult() | 返回重叠操作的完成状态 |
WSAGetQOSByName() | 根据服务名获取QOS参数 |
WSAHtonl() | Htonl()函数的扩展版本,将32位整 数从主机字节顺序转换成网络字节顺序 |
WSAHtons() | Htons()函数的扩展版本,将16位整数 从主机字节顺序转换成网络字节顺序 |
WSAIoctl() | ioctl 函数的重叠执行版本 |
WSAJoinLeaf() | 增加一个结点到会话中 |
WSANtohl() | ntohl()函数的扩展版本,将32位整数从 网络字节顺序转换成主机字节顺序 |
WSANtohs() | ntohs()函数的扩展版本,将16位整数 从网络字节顺序转换成主机字节顺序 |
WSAProviderConfigChange() | 接收安装服务或卸载服务的通知消息 |
WSARecv() | Recv()函数的扩展版本 |
WSARecvFrom() | recvfrom()函数的扩展版本 |
Windows扩展函数 | 功 能 |
WSAResetEvent() | 重置事件对象 |
WSASend() | send()函数的扩展版本 |
WSASendTo() | sendto()函数的扩展版本 |
WSASetEvent() | 设置事件对象 |
WSASetLastError() | 设置最近的错误信息 |
WSASocket() | socket()函数的扩展版本。使用 WSAPROTOCOL_INFO结构作 为输入参数,并创建重叠socket |
WSAStartup() | 初始化Windows Sockets DLL |
WSAWaitForMultipleEvents() | 在多个事件对象上阻塞 |
上面这些扩展函数是对Windows Socket规范提供的Socket函数的封装,支持消息和函数处理。
如在WSAAsyncGetServByName()函数中,可以指定接收消息的对话框句柄和消息,当异步函数执行完毕后,会发送消息给对话框,用户可以在对话框中捕获相应的消息进行处理。
这与Windows的消息编程模式是一致的。因此,Windows Socket扩展函数的封装方便了Socket程序的开发。用户可以尽量使用扩展函数开发Socket程序。
版权声明:本文为博主原创文章,未经博主允许不得转载。
winsock2版的函数 加了WSA 前缀
且前者是阻塞模式, 后者是非阻塞模式。
若想设置前者为非阻塞模式
u_long mode = 1;
ioctlsocket(sendsocket,FIONBIO,&mode); //mode为非零是:非阻塞模式,为零是:阻塞模式
sento(sendSocket,sendData,strlen(sendData),0,(LPSOCKADDR)&desAddr,sizeof(desAddr));//发送数据
》》》 Windows扩展函数说明
Windows Socket规范提供了一组基于Berkeley套接字函数的扩展函数。
这些扩展函数在实现Socket功能的基础上,还允许基于消息或函数进行处理,处理异步网络事件,开启重叠I/O功能。除了WSAStartup()函数和WSACleanup()函数外,编写Socket程序可以不使用这些扩展API函数,但是建议使用这些扩展函数以保持与Windows编程模式一致。
表16-3中列出了有关Socket的Windows扩展函数。
表16-3 有关Socket的Windows扩展函数
Windows扩展函数 | 功 能 |
WSAAccept() | accept()函数的扩展版本, 允许条件接收和Socket分组 |
WSAAsyncGetHostByAddr() | 根据地址异步获取主机,基于消息实现 |
WSAAsyncGetHostByName() | 根据名称异步获取主机,基于消息实现 |
WSAAsyncGetProtoByName() | 根据名称异步获取协议信息,基于消息实现 |
WSAAsyncGetProtoByNumber() | 根据协议号异步获取协议信息,基于消息实现 |
WSAAsyncGetServByName() | 根据服务器名称和端口号,异步 获取服务器信息,其是基于消息实现的 |
WSAAsyncGetServByPort() | 根据端口号和协议,异步获取服 务器信息,其是基于消息实现的 |
WSAAsyncSelect() | 实现异步版本的select()函数 |
WSACancelAsyncRequest() | 取消异步获取系列的函数,即取消 WSAAsyncGetXByY()函数 |
WSACleanup() | 退出底层的Windows Socket DLL的引用 |
WSACloseEvent() | 销毁事件对象 |
WSAConnect() | Connect()函数的扩展版本,允许交换 连接数据和QOS标准 |
WSACreateEvent() | 创建事件对象 |
WSADuplicateSocket() | 复制Socket |
WSAEnumNetworkEvents() | 枚举网络事件 |
WSAEnumProtocols() | 枚举当前系统中每个有效的协议信息 |
WSAEventSelect() | 连接网络事件和事件对象 |
WSAGetLastError() | 获取最近的Windows Socket错误信息 |
WSAGetOverlappedResult() | 返回重叠操作的完成状态 |
WSAGetQOSByName() | 根据服务名获取QOS参数 |
WSAHtonl() | Htonl()函数的扩展版本,将32位整 数从主机字节顺序转换成网络字节顺序 |
WSAHtons() | Htons()函数的扩展版本,将16位整数 从主机字节顺序转换成网络字节顺序 |
WSAIoctl() | ioctl 函数的重叠执行版本 |
WSAJoinLeaf() | 增加一个结点到会话中 |
WSANtohl() | ntohl()函数的扩展版本,将32位整数从 网络字节顺序转换成主机字节顺序 |
WSANtohs() | ntohs()函数的扩展版本,将16位整数 从网络字节顺序转换成主机字节顺序 |
WSAProviderConfigChange() | 接收安装服务或卸载服务的通知消息 |
WSARecv() | Recv()函数的扩展版本 |
WSARecvFrom() | recvfrom()函数的扩展版本 |
Windows扩展函数 | 功 能 |
WSAResetEvent() | 重置事件对象 |
WSASend() | send()函数的扩展版本 |
WSASendTo() | sendto()函数的扩展版本 |
WSASetEvent() | 设置事件对象 |
WSASetLastError() | 设置最近的错误信息 |
WSASocket() | socket()函数的扩展版本。使用 WSAPROTOCOL_INFO结构作 为输入参数,并创建重叠socket |
WSAStartup() | 初始化Windows Sockets DLL |
WSAWaitForMultipleEvents() | 在多个事件对象上阻塞 |
上面这些扩展函数是对Windows Socket规范提供的Socket函数的封装,支持消息和函数处理。
如在WSAAsyncGetServByName()函数中,可以指定接收消息的对话框句柄和消息,当异步函数执行完毕后,会发送消息给对话框,用户可以在对话框中捕获相应的消息进行处理。
这与Windows的消息编程模式是一致的。因此,Windows Socket扩展函数的封装方便了Socket程序的开发。用户可以尽量使用扩展函数开发Socket程序。