Windows 7 环境下基于原始套接字和ICMP的路由探测开发的问题【1】

原创 2011年01月09日 20:25:00

在Windows XP环境下开发的路由探测程序搬到Windows 7下面编译运行发现在recvfrom()调用后并没有收到应有的ICMP响应报文,问题困扰了我大概1天的时间,最后发现把代码放到XP下面编译可以,运行结果正确,到了Windows 7下面就是不行。通过Google得知,在Windows 7平台下,安全策略要比Windows XP严格许多,默认情况下,Windows 7的防火墙屏蔽了ICMP回显报文,也就是说,防火墙阻止了ICMP报文,所以在调用recvfrom函数的时候总是SOCKET_ERROR,错误代码是WSAETIMEDOUT,显示超时,读不到ICMP的报文响应。

 

解决方案:

关闭防火墙,如果觉得关闭防火墙不安全的话,那就新建一个防火墙过滤规则,详细方法见:http://www.howtogeek.com/howto/windows-vista/allow-pings-icmp-echo-request-through-your-windows-vista-firewall/

相关文章推荐

浅谈原始套接字 SOCK_RAW 的内幕及其应用(port scan, packet sniffer, syn flood, icmp flood)

一、SOCK_RAW 内幕 首先在讲SOCK_RAW 之前,先来看创建socket 的函数: int socket(int domain, int type, int protocol); doma...

ICMP,原始套接字,ping实现

ICMP学习笔记           最近一直在看网络编程方面的书,对ping命令有了一些认识,在此写下来,已帮助自己记忆,同时也和大家一起分享学习。...

linux原始套接字-发送ICMP报文

本程序可以使得一个不存在的ip被ping通,演示了如何通过PF_PACKET SOCK_RAW来接收和发送arp和icmp帧。...
  • maxzero
  • maxzero
  • 2016年10月11日 19:13
  • 1387

原始套接字之PING(7)

接收到数据进行解包: /*解压接收到的包,并打印信息*/ static int icmp_unpack(char *buf,int len) { int iphdrlen; struct ip ...

Windows下基于原始套接字的回射客户端

根据使用的场合的不同,我们可以使用TCP、UDP和原始套接字来实现这个功能,今天就说一下基于基于原始套接字的回射客户端源代码。跟前面提过的工程一样,这个工程里面也包含着SocketFrame.cpp和...

Windows下基于原始套接字的回射客户端的源码

SocketFrame.cpp: #include "StdAfx.h" #include "SocketFrame.h" #include "ws2tcpip.h" #include "mstcp...

Windows下利用原始套接字实现的一个抓包程序Demo

早就学过了套接字编程,但是原始套接字还没用过。最近听了网络安全老师的课,心血来潮,写了个抓包程序Demo,把代码分享给大家,感兴趣的可以看看。引用一句网络安全老师的话:“你们要本着技术的心态去实践,哎...
  • kyt511
  • kyt511
  • 2015年05月24日 11:12
  • 3448

linux原始套接字(1)-arp请求与接收

http://www.cnblogs.com/yuuyuu/p/5164685.html 一.概述                                        ...

《UNIX网络编程 卷1》 笔记: 原始套接字—ping程序

原始套接字提供普通的TCP和UDP套接字所不提供的以下3个能力:     1. 进程可以读写ICMPv4、IGMPv4、ICMPv6分组。     2. 进程可以读写内核不处理其协议字段的IPv4数据...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows 7 环境下基于原始套接字和ICMP的路由探测开发的问题【1】
举报原因:
原因补充:

(最多只允许输入30个字)