Socket,Sendto返回值大于0,接收端却收不到消息

问题:如题,
看了这篇帖子,http://bbs.csdn.net/topics/40272317
也还是没有解决问题,还希望各位高手能说下自己以前的经验之谈。。。
...全文
700 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
乔巴好萌 2013-03-16
  • 打赏
  • 举报
回复
引用 6 楼 nanfeiyannan 的回复:
引用 5 楼 openXMPP 的回复:用udp的? 这个问题应该直接上wireshark抓包 看是网络问题还是编程问题,如抓包没抓到数据,说明是发送有问题 如果抓到数据了但程序没收到,就检查下防火墙配置 应该是编程的问题。。。
抓包有数据? 那你检查下防火墙配置阿 linux下有的发行版 会有端口防火墙的默认配置 在网络配置里禁用试试 如果防火墙也关了 那就好好检查下代码
  • 打赏
  • 举报
回复
引用 5 楼 openXMPP 的回复:
用udp的? 这个问题应该直接上wireshark抓包 看是网络问题还是编程问题,如抓包没抓到数据,说明是发送有问题 如果抓到数据了但程序没收到,就检查下防火墙配置
应该是编程的问题。。。
乔巴好萌 2013-03-16
  • 打赏
  • 举报
回复
用udp的? 这个问题应该直接上wireshark抓包 看是网络问题还是编程问题,如抓包没抓到数据,说明是发送有问题 如果抓到数据了但程序没收到,就检查下防火墙配置
  • 打赏
  • 举报
回复
引用 3 楼 zhcosin 的回复:
你是用的 ipv6 吗?而且是用的自动生成的 fe80 打头的 ipv6 地址? 如果是的话,自己配置一个 ipv6 地址,不要使用 fe80 打头的 ipv6 地址。
没有,IPV4的
zhcosin 2013-03-16
  • 打赏
  • 举报
回复
你是用的 ipv6 吗?而且是用的自动生成的 fe80 打头的 ipv6 地址? 如果是的话,自己配置一个 ipv6 地址,不要使用 fe80 打头的 ipv6 地址。
  • 打赏
  • 举报
回复
引用 1 楼 CKnightx 的回复:
首先,楼主应该检查,服务端的socket有没有绑定端口,绑定的哪个端口,这个端口,是不是客户端发送指定的端口相同。 其次,sendto是UDP的发送接口,UDP不提供有保证的服务(与TCP的不同)。所以,在网络状况差的环境下,UDP很有可能会丢包。 如果楼主要传输文件之类的数据,建议使用TCP,因为文件需要保证完整性,UDP可能会丢包。保证不了。 当然,你也……
服务端的已经绑定了,而且跟客户端指定的是同一个端口。 应该也不是丢包的问题,因为就是本机的客户端对本机的服务端,只发送了简单的几个字符测试
  • 打赏
  • 举报
回复
首先,楼主应该检查,服务端的socket有没有绑定端口,绑定的哪个端口,这个端口,是不是客户端发送指定的端口相同。 其次,sendto是UDP的发送接口,UDP不提供有保证的服务(与TCP的不同)。所以,在网络状况差的环境下,UDP很有可能会丢包。 如果楼主要传输文件之类的数据,建议使用TCP,因为文件需要保证完整性,UDP可能会丢包。保证不了。 当然,你也可以添加RTP协议辅助UDP来保证传输。对初学者,并不建议。

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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