使用 IPRaw_PING 例程
电脑的地址 192.168.1.190 , 设备地址 192.168.1.200
u8 IPAddr[4] = {192, 168, 1, 200}; //IP address
u8 GWIPAddr[4] = {192, 168, 1, 1}; //Gateway IP address
u8 IPMask[4] = {255, 255, 255, 0}; //subnet mask
u8 DESIP[4] = {192, 168, 1, 190}; //destination IP address
使用上述配置 电脑 ping 设备正常 设备 ping 电脑也正常
u8 IPAddr[4] = {192, 168, 1, 200}; //IP address
u8 GWIPAddr[4] = {192, 168, 1, 1}; //Gateway IP address
u8 IPMask[4] = {255, 255, 255, 0}; //subnet mask
u8 DESIP[4] = {192, 168, 2, 190}; //destination IP address
使用上述配置 电脑ping 设备不正常(这里应该要能ping通) 设备 ping 电脑不通(这里对的) 都是 time out ,
查看: 2345
回复: 3
ch32v307vct6 使用 IPRaw_PING 例程的问题
热门产品 :
CH32L103: 32位PDUSB低功耗单片机
您好,IPRaw_PING例程只是演示如何主动ping的demo程序,当iprawsocket置1后,协议栈就不再处理关于ping的包,且代码逻辑为只应答DESIP的ping包,所以即使您的电脑和板子在同一网段,但ip不是DESIP,那也不会回复ping包,所以无法ping通,这部分代码需要您自己实现的。
代码里没看到有哪里处理 判断DESIP的地方, 能方便再详细的指导一下吗?用的 Netlib库,这个协议栈不是封装好的吗,外部好像也没办法处理吧
您好,因为处理的数据是通过socket来接收的,创建socket的目标ip为DESIP,所以不会处理别的ip发的ping包,当netconfig.h中WCHNET_NUM_IPRAW数量设置为1时,协议栈不会再处理ping包,而是交由应用层,对于非目标ip的ping包
处理,需要客户自己实现,若想使用协议栈的ping包处理机制,可以使用TCP等例程或将WCHNET_NUM_IPRAW清0
请勿发布广告和违法内容, 代码可以选择编辑器代码语言格式, 更易他人阅读帮助您, 或者留下联系方式,以便更好更快服务您
只有登录才能回复,可以选择微信账号登录