sendto、WSASendto,recvfrom、WSARecvfrom 区别?



 

sendto、WSASendto,recvfrom、WSARecvfrom 区别?

  875人阅读  评论(0)  收藏  举报
  分类:
winsock1版的函数  无WSA前缀

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程序。

 

sendto、WSASendto,recvfrom、WSARecvfrom 区别?

  875人阅读  评论(0)  收藏  举报
  分类:
winsock1版的函数  无WSA前缀

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程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值