局域网中,别的机器一开机,就能获知? 捕获arp吗?不知道怎么弄?请高人指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以通过枚举网络资源得到,使用WNetOpenEnum和WNetEnumResource。 笨办法,弄个后台线程Ping.^^&& 可以通过定量枚举网络资源得到,使用WNetOpenEnum和WNetEnumResource。但是这个办法太笨我也想知道有没有好的办法关注 在定时器中ping,或枚举其他方法??? 定时器中ping,或枚举这两个办法都比较笨,有没有其他好的办法?机器开启的时候,应该会有一些网络动作,都有那些动作?怎么捕获这些网络包? 自己写个程序不端接收ARP包,因为别的机器一启动一定会发送给局域网一个广播通知的(ARP包) 我有一个办法,理论上绝对可行!你发一个 UDP 广播包, 目的IP 为局域网广播地址。由于任何机器(开着机的)上都没有程序来接收你这个广播的UDP包,那么必然由ICMP 协议来回应你的UDP广播包。也就是说所有开着机的机器都会回应给你一个 ICMP 包, 其类型为 目的端口不可到达(因为在应用层没有程序来接收你的UDP包)。你自己把这个包打开,然后观查源地址就行了。这很容易, 网上到处都有 PING 程序,你可以看看。 那样的话,要网络监听也,winpcap比较好 yes,winpcap can do it.the easy way is send arp package. 机器一开机是不是广播UDP包,即向*.*.*.255发送UDP包? winpcap 就是专门捕获的!!当然还有其他用途〉 http://bbs2.acnow.net/html/article/34/16502.htm 假如一个局域网有多个网段,如何PING? 这个问题不存在绝对解决方案,要看局域网的结构和网络设备配置。ARP方式如果不是监听主机和被监视主机在同一冲突域,基本无效。如果是多网段,路由器/交换机全配成ICMP不可转发,Ping方式无效。如果是多网段,路由器/交换机全配成IP广播不可转发,UDP方式无效。So....要看环境了,环境看准了再谈实现办法。 单网段,判断开机时的UDP广播,是不是一个可以解决的方法 Re:单网段,判断开机时的UDP广播,是不是一个可以解决的方法UDP广播方式是用来扫描已经开机的主机的,不是用来判断某机器正在开机的,既然是单网段,推荐arp方式。 我以前做过这个东西的方法就是:监听所有ARP包, 检查: 1 :发送地址和接收地址是否相同 2 :目的硬件地址是否全为0 不清楚还有没有其他的条件 满足条件1,2的被视为机器启动 或者改动IP时发送的ARP包 geland(ding) 的方法可以试一下 还有一个问题,原始socket可以监视arp包吗 原始socket可以监视arp包吗?不可以的吧 将网络连接中的“禁用TCP/IP上的NetBios”,开机时,用Sniffer捕获不到任何包啊 我前段时间弄了一个,连接同事机器的一个程序 DWORD retval; NETRESOURCE netsrc; memset(&netsrc,0,sizeof(NETRESOURCE)); //\\fox\share netsrc.dwScope = RESOURCE_CONNECTED; netsrc.dwType = RESOURCETYPE_DISK; netsrc.dwDisplayType = RESOURCEDISPLAYTYPE_GENERIC; netsrc.dwUsage = RESOURCEUSAGE_CONNECTABLE; netsrc.lpRemoteName = "\\fox\\share"; //netsrc.lpLocalName = "h:\\"; retval = WNetAddConnection2(&netsrc,"guest","guest",CONNECT_UPDATE_PROFILE); if(retval!= NO_ERROR) //connect ok其实就是通过程序连接机器//fox自己在本机上运行本程序,当连接成功,意味着开机 ???有局限性,前提必须该机器有一个共享,而且可以用guest用户登陆(本程序用户密码都为guest) 急急急!!!关于十六进制输出的问题 关闭进程的问题!!!!!!! 怎样用vc写个挂机锁? 一个UNICODE的问题 进程间的通信问题,可以解决的来! VC高手请看: 能把含有若干'\0'字符的数组存入数据库吗??? /******* 关于socket,求一些好的建议及好的代码!******/ 关于Scrollbar的一个问题, 请进来看看。。 VC工程中函数定义无法联想 有哪位高手知道运动一个小球和一个固定大球体的碰撞算法以及它们的轨迹跟踪???急!! 窗口中的遍历问题,希望各位能帮帮忙 关于线程的问题<
但是这个办法太笨我也想知道有没有好的办法
关注
其他方法???
这两个办法都比较笨,有没有其他好的办法?
机器开启的时候,应该会有一些网络动作,都有那些动作?怎么捕获这些网络包?
由于任何机器(开着机的)上都没有程序来接收你这个广播的UDP包,那么必然由
ICMP 协议来回应你的UDP广播包。
也就是说所有开着机的机器都会回应给你一个 ICMP 包, 其类型为 目的端口不可到达(因为在应用层没有程序来接收你的UDP包)。你自己把这个包打开,然后观查源地址就行了。
这很容易, 网上到处都有 PING 程序,你可以看看。
如果是多网段,路由器/交换机全配成ICMP不可转发,Ping方式无效。
如果是多网段,路由器/交换机全配成IP广播不可转发,UDP方式无效。So....要看环境了,环境看准了再谈实现办法。
方法就是:监听所有ARP包,
检查:
1 :发送地址和接收地址是否相同
2 :目的硬件地址是否全为0
不清楚还有没有其他的条件
满足条件1,2的被视为机器启动
或者改动IP时发送的ARP包
不可以的吧
NETRESOURCE netsrc;
memset(&netsrc,0,sizeof(NETRESOURCE));
//\\fox\share
netsrc.dwScope = RESOURCE_CONNECTED;
netsrc.dwType = RESOURCETYPE_DISK;
netsrc.dwDisplayType = RESOURCEDISPLAYTYPE_GENERIC;
netsrc.dwUsage = RESOURCEUSAGE_CONNECTABLE; netsrc.lpRemoteName = "\\fox\\share";
//netsrc.lpLocalName = "h:\\"; retval = WNetAddConnection2(&netsrc,"guest","guest",CONNECT_UPDATE_PROFILE);
if(retval!= NO_ERROR)
//connect ok其实就是通过程序连接机器//fox
自己在本机上运行本程序,当连接成功,意味着开机 ???
有局限性,前提必须该机器有一个共享,而且可以用guest用户登陆(本程序用户密码都为guest)