关于udp发送消息

lslsyqyq 2014-05-09 03:28:19
udp是面向消息的,使用sendto发送的数据作为一条消息。
那么返回值是不是要么就是消息长度,要么就失败?

因为tcp中是这样的:

while (nleft > 0)
{
rc = send(s, &buf[idx], nleft, 0);
if (rc == SOCKET_ERROR)
{
fprintf(stderr,"send failed: %d\n", WSAGetLastError());
return -1;
}

nleft -= rc;
idx += rc;
}


流式是一个个字节发出去,所以要判断有没有发完。
那么udp是不是发送总是整个消息一起发,只需要判断是否成功而不需要循环分段发送呢?
...全文
799 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2014-05-12
  • 打赏
  • 举报
回复
引用 3 楼 lslsyqyq 的回复:
其实我是想问问消息边界的事情 udp面向消息 If no error occurs, sendto returns the total number of bytes sent, which can be less than the number indicated by len 如果返回值小于len,就是说没全发出去,对吧 那余下的还要重发?
是的
lslsyqyq 2014-05-12
  • 打赏
  • 举报
回复
其实我是想问问消息边界的事情 udp面向消息 If no error occurs, sendto returns the total number of bytes sent, which can be less than the number indicated by len 如果返回值小于len,就是说没全发出去,对吧 那余下的还要重发?
oyljerry 2014-05-10
  • 打赏
  • 举报
回复
UDP只管发送出去了,不像TCP会保证发送成功等。
hurryboylqs 2014-05-10
  • 打赏
  • 举报
回复
sendto一般都是成功的 除非socket被关闭了

18,356

社区成员

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

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