send的返回值小于要发送的信息长度并且大于0怎么办

Moon1 2007-04-28 06:35:14
应该有这种情况吧

我看很多的代码都是看send的返回值是不是错误。

或者干脆忽略。

我用.net, 里面的Socket.Send 就是包装的win32的send。
包装的里面,我看了下,如果是-1,就抛出一个异常,否则就返回send的返回值

我看了很多.net代码都是根本不考虑他的返回值,好象要么是错误,要是么全都发送了

还是?如果 发送长度<数据长度,就循环继续发送剩余的?
...全文
672 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oversense 2007-04-28
  • 打赏
  • 举报
回复
如果没出错,又>0 当然要循环
wujiabao 2007-04-28
  • 打赏
  • 举报
回复
我也没发现这种情况,如查真的出现你说的情况,下面代码可以参考

char sendbuf[MAX_SIZE];//要发送的数据
int len=??;//要发送的数据长度
int sendlen=0;//单次发送的数据长度
int sendtotal=0;//总共发送的长度

while(sendtotal<len)
{
sendlen=send(s,buf+sendtotal,len-sendtotal,0);
sendtotal+=sendlen;
}

microyzy 2007-04-28
  • 打赏
  • 举报
回复
没遇到过这个情况,按理论,这个只有在非阻塞socket下才会遇到吧,一般的处理当然是要根据返回值来判断,然后把剩余的再发送(应该等一会,系统缓冲区满了),因为有部分数据已经发送出去了,不能重复发送

当然,如果你知道server接收的逻辑,或者server也是你自己可以定的,怎么都行,保证数据完整但又不重复即可

18,356

社区成员

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

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