由于软件的需求,CH395内置协议栈4个socket不够用,现在改用外部协议栈keil的RL_TCPnet, 主控是M3 ARM--LPC1788,CH395的socket 0工作在macraw模式。 CH395作为TCP server,PC上用客户端来连接。 现在发现的问题是我用网线跟一台PC机直连,TCP连接正常,收发正常。但是在这台PC机和板子间用一个交换机连在一起的时候就无法连接了。通过协议栈的debug信息可以看到当PC上客户端发起TCP连接的时候,板子能收到ARP报文,且解析正常。通过把协议栈响应的报文打印出来发现跟之前直连的时候是一样的(这里打印是在协议栈发送驱动里将数据通过SPI发送给CH395之前),PC端我用网卡抓包软件也没发现有ARP响应报文到达PC的网卡。 我换了一台PC机直连,发现也无法连接,现象跟用交换机一样。
这个问题找了好几天了,一直没找到原因,为什么在一台机子上是可以连接,换了机子和用交换机都不行了。 我能确认的是协议栈生成了ARP响应报文后,确实调用了CH395SendData函数,把数据发送给了CH395,但是CH395有没有收到报文,有没有发送出去我就不知道了。 请问有没有办法可以查询CH395是否收到报文,且发送了报文??
或者这个问题大家有啥想法可以分享出来交流交流,让我也有点启发。谢谢