windows下有关recv的使用

thegreatone 2012-01-10 04:10:48
我使用TCP协议来发送数据,客户端用VC开发,但是我用recv接收数据时,采用循环的方法,直到缓收区没有数据可读;但是目前面临一个问题,recv最后返回的值为0,也就表示断开连接了!按理说,不应该是断开连接,应该是缓收区没有数据可读呀!请问大侠,我该怎么做来解决这个问题?
...全文
230 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
charmign1 2012-01-10
  • 打赏
  • 举报
回复
recv最后返回的值为0,就是对方断开连接了
如果缓冲区没有数据返回的就是SOCKET_ERROR 超时了
百事烟 2012-01-10
  • 打赏
  • 举报
回复
void fun(/*...*/)
{
/*...*/
int res = recv(/*...*/);
if (res <= 0)
{
if(WSAGetLastError() != 10035)
{
closesocket(/*...*/);
//AfxMessageBox(L"接收数据时出错!!");
}
return;//如果是10035什么也不做就行,并且这里不用加sleep
}
/*...*/
}
oyljerry 2012-01-10
  • 打赏
  • 举报
回复
你就按数据接收完了,然后处理所有的数据块

18,363

社区成员

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

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