socket中的recvfrom函数

nizainade 2007-08-11 07:54:00
我的程序是这样的,向远程主机发送ping数据包,根据返回的包判断是否是通的。现在实现的思路是接受和发送分开处理,先把测试包全部发送出去,等了一段时间后开始接受分析。测试发现,当ip增大到几百个的时候,有些现实是通的ip但是却没接受到包。
我的问题是,在有大量的包到来的时候,recvfrom这个函数能不能正确接受到发送过来的每个包,会不会出现丢包的现象才导致了上面的问题?
...全文
328 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nizainade 2007-08-13
  • 打赏
  • 举报
回复
那么再请问下,如果我要实现测试远程主机是否是通的这个功能,是不是两种实现方法?一种就是不可靠的udp的非连接,另一种是不是可靠的基于连接的?
Avoid 2007-08-12
  • 打赏
  • 举报
回复
UDP是不可靠的,它不能保证发送的数据一定能收到。

用TCP
nizainade 2007-08-12
  • 打赏
  • 举报
回复
TO: Avoid(千金散尽还复来)
我这里是直接用的socket的sendto、select、recvfrom函数,和widows的ping差不多,就是直接打包发送数据,没有使用什么协议吧
nizainade 2007-08-12
  • 打赏
  • 举报
回复
看来要想保证udp发送和接受的可靠性,还要有其他的机制?
草鞋工 2007-08-12
  • 打赏
  • 举报
回复
udp的优势是发送数据比tcp快,tcp协议本身有很多机制来保证数据的完整性,udp本身是系统只管发送,对方能不能收到系统不会管.(PS:发现上次回复,把udp,写成UPD了,这几天太晕了)
nizainade 2007-08-12
  • 打赏
  • 举报
回复
udp会丢包?既然这样,那udp协议就是不可靠的,用udp协议发送和接受数据岂不是郁闷了,不可靠的协议还有什么用呢
草鞋工 2007-08-12
  • 打赏
  • 举报
回复
UPD会丢包,用UPD就必须容忍这点.
nizainade 2007-08-11
  • 打赏
  • 举报
回复
TO:LuckilyYu(菜鸟要飞翔!)

我的情况是能接受到一部分数据,另一小部分接受不到,和阻塞模式有关吗
soft78 2007-08-11
  • 打赏
  • 举报
回复
up
LuckilyYu 2007-08-11
  • 打赏
  • 举报
回复
UDP吧,是没有设置非阻塞的原因吗

18,356

社区成员

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

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