|
发表于 2013-1-18 20:48:21
|
显示全部楼层
- static void clientIcmpRequest (const uint8_t *destip);
复制代码 用clientIcmpRequest()发送一个ICMP请求(即Ping),它有一个参数,*destip,及目标地址IP地址。
比如你要ping 8.8.8.8
先要把这个IP地址初始化一下:- static byte hisip[] = {8,8,8,8 };
复制代码 然后可以用- ether.clientIcmpRequest(hisip);
复制代码 向8.8.8.8这个ip地址发送一个imcp请求
如何查看目标IP是否回应嘞。。。
这就要先理解- word len = ether.packetReceive(); // go receive new packets
- word pos = ether.packetLoop(len); // respond to incoming pings
复制代码 这个可以看做mcu和enc交换数据,
packetReceive()方法: 从网络接收一个新传入的数据包;
packetLoop() 方法:对具体收到的信息作出回应,包含“ping” 请求(ICMP echo 请求)。
这个每个循环都要调用,不然网络就会有延迟。
然后再通过- static uint8_t packetLoopIcmpCheckReply (const uint8_t *ip_mh);
复制代码 方法。
这个方法获取目标ip的icmp应答。有返回值,没有应答,返回false,有应答返回true,
所以你就要调用- if (len > 0 && ether.packetLoopIcmpCheckReply(hisip)){
- //你的代码
- }
复制代码 len>0表示enc收到数据包
ether.packetLoopIcmpCheckReply(hisip)如果为真,表示收到了hisip的icmp应答。
——————————————————————————————————
今天喝高了。。不知道说对没。。各位大大指正。。
|
|