函数整理


2. 传输数据
在重叠 I/O 模型中,传输数据的函数是 WSASend、WSARecv(TCP)和 WSASendTo、
WSARecvFrom 等。下面是 WSASend 函数的定义,其他函数与之类似。

WINSOCK_API_LINKAGE int WSAAPI WSARecv ( 
SOCKET s, // 套接字句柄
LPWSABUF lpBuffers, // WSABUF 结构的数组
// 每个WSABUF结构包含一个缓冲区指针和对应缓冲区的长度
DWORD dwBufferCount, // 上面 WSABUF 数组的大小
LPDWORD lpNumberOfBytesRecvd, // 如果 I/O 操作立即完成的话,此参数取得实际传输数据的字节数
LPDWORD lpFlags, // 标志
LPWSAOVERLAPPED lpOverlapped, //与此I/O操作关联的WSAOVERLAPPED结构
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine // 指定一个完成例程
);




这些函数与 Winsock1 中的 send、recv 等函数相比,都多了如下两个参数。
LPWSAOVERLAPPED lpOverlapped, 
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine


I/O 操作函数都接收一个 WSAOVERLAPPED 结构类型的参数。这些函数被调用之后会 立即返回,它们依靠应用程序传递的 WSAOVERLAPPED 结构管理 I/O 请求的完成。应用程 序有两种方法可以接收到重叠 I/O 请求操作完成的通知:
(1)在与 WSAOVERLAPPED 结构关联的事件对象上等待,I/O 操作完成后,此事件对 象受信,这是最经常使用的方法。
(2)使用 lpCompletionRoutine 指向的完成例程。完成例程是一个自定义的函数,I/O 操 作完成后,Winsock 便去调用它。这种方法很少使用,将 lpCompletionRoutine 设为 NULL 即 可。
 下一小节将详细讨论如何使用第一种方法接收网络事件通知。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值