原始套接字recvfrom的问题

Garfier 2010-02-05 11:44:02
我使用原始套接字开发了一个traceroute程序,在接收ICMP数据报的时候,recvfrom会接收到的ICMP报文中不仅有我想要的ICMP响应报文,还有其他的ICMP报文。

比如, 我用windows的 tracert 命令测量路由的同时,我运行我自己写的traceroute程序,在我的程序中也会收到对应于windows tracert命令的ICMP响应报文。此外,我在不同的线程中调用我的traceroute程序,使之并行的运行,各个traceroute程序之间也会相互影响,收到的报文中有对应于其他的traceroute的ICMP响应报文。

我怀疑原始套接字的 recvfrom 操作可能会接收任何ICMP报文,我的问题是,是否可以设置一下,使之只接收对应于自己这个raw socket发送的ICMP响应报文呢?
...全文
293 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2010-05-17
  • 打赏
  • 举报
回复
结贴通知:
请lz注意结贴。。。。
tech_study_00 2010-02-24
  • 打赏
  • 举报
回复
原始套接字的收发可能是有你这个限制,
如果用系统socket可能没有这个问题吧?
SOCKET sock = socket(AF_INET, PROTOCAL_IP, 0);
WizardK 2010-02-22
  • 打赏
  • 举报
回复
原始套接字方式是在IP层对SOCKET进行编程,所以需要你在接收后对结构进行分析和过滤。
iorikingdom 2010-02-22
  • 打赏
  • 举报
回复
试试不设混杂模式的情况下看看
luck_wei 2010-02-12
  • 打赏
  • 举报
回复
首先声明我也不太懂,请参考。
1、主机遇到的第一个路由应该是相同的,这是网络环境决定的。
2、你测试的是相同的地址吗?如果相同那结果应该也差不多。
Garfier 2010-02-12
  • 打赏
  • 举报
回复
没人回答啊? 自己顶一下,各位大侠帮帮忙~~
lovesi3344 2010-02-05
  • 打赏
  • 举报
回复

帮顶

这个C++版块貌似MFC和VC的高手不是很多
可以将帖子转移到那个版块

18,356

社区成员

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

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