socket中udp和tcp

一个程序员的修炼之路 2010-10-23 10:35:07


1.使用tcp,客户端发送长为5的字符串"china",服务器接收时,写为
ret = recv(sock,buff,3,0)
那么ret为3

2.使用udp,客户端发送长为5的字符串"china",服务器接收时,写为
ret = recv(sock,buff,3,0,(SOCKADDR *)&client,&nameLen)
那么ret为SOCKET_ERROR


我的问题:udp一次性接收一个数据报,而数据报长度为5,而其缓冲区为3,所以接收错误?
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ouyh12345 的回复:]

udp应该是把包抛弃了
而tcp应该还有数据留在缓冲里
[/Quote]

3k,我也这么想的 想确认下 非常感谢 五岭散人的时间帮助
ouyh12345 2010-10-23
  • 打赏
  • 举报
回复
udp应该是把包抛弃了
而tcp应该还有数据留在缓冲里
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ouyh12345 的回复:]

GetLastError返回什么?
[/Quote]

多谢提醒,
#define WSAEMSGSIZE (WSABASEERR+40)
是 这个错误,确实是size问题;

tcp就不会报这种错误了,流工作方式的原因?
ouyh12345 2010-10-23
  • 打赏
  • 举报
回复
GetLastError返回什么?

18,356

社区成员

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

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