Chinaunix

标题: 如何监控与指定IP的机器之间连接是否断开? [打印本页]

作者: hnayyc    时间: 2009-07-09 11:31
标题: 如何监控与指定IP的机器之间连接是否断开?
要写一个C程序在Linux上运行。功能是监控给定的几个IP地址的主机与程序所在主机之间的连接是否正常。在此说的连接指物理上的连接。本人觉得应该通过对网卡驱动的操作来实现。到那时一直没有思路。希望有高手给予指教。不胜感激!
作者: alexhappy    时间: 2009-07-09 13:59
ping不就行了
作者: hnayyc    时间: 2009-07-09 14:26
ping不行。有的机器的防火墙是过滤ping命令的。
作者: alexhappy    时间: 2009-07-09 16:04
原帖由 hnayyc 于 2009-7-9 14:26 发表
ping不行。有的机器的防火墙是过滤ping命令的。

那就模拟个链接,比如用UDP发应答包,或者干脆直接用个TCP链接算了,当然这需要在被监控主机上运行个程序。。。如果你不想这样,那就别让防火墙把自己挡那么死
作者: emmoblin    时间: 2009-07-09 22:18
你说的连接是什么层次?
是指网络是否通吗?ping就搞定了

我觉得从驱动出发是不可能的。
作者: loophole    时间: 2009-07-11 11:22
connect,发送自定义报,然后接收icmp报来判断异常。你看这样行不~~
作者: bobcuer    时间: 2009-07-11 11:38
标题: 回复 #1 hnayyc 的帖子
只知道对方的IP地址,肯定是在IP层了,最方便是设置tcp的keep-alive选项来判断是否连接已经断开了。
作者: leiyun8508    时间: 2009-07-11 11:52
是不是可以通过ioctl来实现呢?
也许这个可以参考下:
http://hi.baidu.com/chenzhuoyou/ ... 6d8e5c564e00e1.html
作者: rockcanon    时间: 2009-07-11 18:27
发心跳包。
作者: yumanifold    时间: 2009-07-11 18:36
标题: 回复 #3 hnayyc 的帖子
一般都会不禁止ping如的吧?如果是在一个局域网内,禁止ping如会带来很多麻烦的

况且icmp包还是有好多种的呢

http://hi.baidu.com/allen_xy/blo ... 06f01073f05dd9.html
作者: duanjigang    时间: 2009-07-13 13:25
这个粗糙点做,TCP直接netstat,或者写个SOCKET发送UDP报文或者ICMP报文




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2