完成端口 收到包的大小总是第一包的大小

yangyanzhao 2017-09-15 03:36:07
while (WAIT_OBJECT_0 != WaitForSingleObject(pIOCPModel->m_hShutdownEvent, 0))
{
BOOL bReturn = GetQueuedCompletionStatus(
pIOCPModel->m_hIOCompletionPort,
&dwBytesTransfered,
(PULONG_PTR)&pSocketContext,
&pOverlapped,
INFINITE);

// 如果收到的是退出标志,则直接退出
if ( EXIT_CODE==(DWORD)pSocketContext )
{
break;
}

收到包的大小总是第一包的大小,不知道什么原因
...全文
802 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-09-18
  • 打赏
  • 举报
回复
不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://bbs.csdn.net/topics/380167545
worldy 2017-09-18
  • 打赏
  • 举报
回复
不能假设完成端口 收到包的字节数相同,TCP层在各个环节可能都会重新组包,改变包的大小
骑猴子的六子 2017-09-18
  • 打赏
  • 举报
回复
那你为啥不把包长作为参数发过去呢
yangyanzhao 2017-09-18
  • 打赏
  • 举报
回复
假设第一包的长度为82,下一包即使长度大于82,也会截断返回82的长度,急啊
lidaoying 2017-09-17
  • 打赏
  • 举报
回复
给你顶下!!!!

18,356

社区成员

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

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