WSASend发送长度

帝国队长 2014-03-27 02:01:32
最近开始学习IOCP,有个小白的问题,希望大侠们指点一下, 就是发送的时候是使用WSASend,但是一直没有看到哪里有设置发送长度
wsasend是以什么做为发送长度的。是buf里有数据就会全部发送吗,那它怎么判断Buf什么时候发完的。
...全文
169 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2014-03-27
  • 打赏
  • 举报
回复
lpBuffers是一个wsabuf结构体数组,wsabuf结构有一个buf指针成员和一个len长度成员,函数的第三个参数是数组单元个数, 发送总长度为wsabuf数组的各个单元的len之和
帝国队长 2014-03-27
  • 打赏
  • 举报
回复
哦,原来是这样,谢谢两位指点
zcchm 2014-03-27
  • 打赏
  • 举报
回复
引用 3 楼 kuba120 的回复:
我觉得是第2个参数 LPWSABUF lpBuffers, wsabuf 有个len是长度指定 buf有多长。应该是这个来设置的吧。
对头
kuba120 2014-03-27
  • 打赏
  • 举报
回复
我觉得是第2个参数 LPWSABUF lpBuffers, wsabuf 有个len是长度指定 buf有多长。应该是这个来设置的吧。
帝国队长 2014-03-27
  • 打赏
  • 举报
回复
我知道完了会通知。并不是说通知的事 我意思sned的时候,会有个指定发送数据的长度 但wsasend的时候好像没有, 那么buf 如果有1024 而我要发256位, send可以指定, wsasend是怎么指定的
zcchm 2014-03-27
  • 打赏
  • 举报
回复
int WSASend( _In_ SOCKET s, _In_ LPWSABUF lpBuffers, _In_ DWORD dwBufferCount, _Out_ LPDWORD lpNumberOfBytesSent, _In_ DWORD dwFlags, _In_ LPWSAOVERLAPPED lpOverlapped, _In_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine ); 异步IO,buffer里全部发完才会通知你。lpCompletionRoutine不就是这个通知函数么?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧