描述:改自realtouch的代码,用作服务器端,使用tcpip通信,上位机连接一段时间后,会自动断开,无法收发数据,上位机报错the network connection was closed by the peer,下位机报错-12或者-13,此时可以ping通。这是什么原因?
服务器端代码如下:
无法连接后,lwip的log就停住了
lwip_accept(0)…
lwip_accept(0) returning new sock=1 addr=192.168.1.20 port=48014
lwip_recvfrom(1, 20011170, 2048, 0x0, ..)
lwip_recvfrom: top while sock->lastdata=00000000
lwip_recvfrom: netconn_recv err=0, netbuf=200178b0
lwip_recvfrom: buflen=8 len=2048 off=0 sock->lastoffset=0
lwip_recvfrom(1): addr=192.168.1.20 port=48014 len=8
lwip_recvfrom: deleting netbuf=200178b0
lwip_send(1, data=2000e290, size=2, flags=0x0)
lwip_send(1) err=0 written=2
lwip_send(1, data=2001197c, size=8, flags=0x0)
lwip_send(1) err=0 written=8
lwip_close(1)
lwip_accept(0)…
lwip_accept(0) returning new sock=1 addr=192.168.1.20 port=48015
lwip_recvfrom(1, 20011170, 2048, 0x0, ..)
lwip_recvfrom: top while sock->lastdata=00000000
lwip_recvfrom: netconn_recv err=0, netbuf=200178b0
lwip_recvfrom: buflen=8 len=2048 off=0 sock->lastoffset=0
lwip_recvfrom(1): addr=192.168.1.20 port=48015 len=8
lwip_recvfrom: deleting netbuf=200178b0
lwip_send(1, data=2000e290, size=2, flags=0x0)
lwip_send(1) err=0 written=2
lwip_send(1, data=2001197c, size=8, flags=0x0)
lwip_send(1) err=0 written=8
lwip_close(1)
lwip_accept(0)…
lwip_accept(0) returning new sock=1 addr=192.168.1.20 port=47757
lwip_recvfrom(1, 20011170, 2048, 0x0, ..)
lwip_recvfrom: top while sock->lastdata=00000000
lwip_recvfrom: netconn_recv err=-12, netbuf=00000000
lwip_recvfrom(1): buf == NULL, error is “Connection closed.”!
lwip_close(1)
lwip_accept(0)…
lwip_accept(0) returning new sock=1 addr=192.168.1.20 port=47758
lwip_recvfrom(1, 20011170, 2048, 0x0, ..)
lwip_recvfrom: top while sock->lastdata=00000000
lwip_recvfrom: netconn_recv err=-12, netbuf=00000000
lwip_recvfrom(1): buf == NULL, error is “Connection closed.”!
lwip_close(1)
lwip_accept(0)…
lwip_accept(0) returning new sock=1 addr=192.168.1.20 port=47759
lwip_recvfrom(1, 20011170, 2048, 0x0, ..)
lwip_recvfrom: top while sock->lastdata=00000000
lwip_recvfrom: netconn_recv err=-12, netbuf=00000000
lwip_recvfrom(1): buf == NULL, error is “Connection closed.”!
lwip_close(1)
lwip_accept(0)…
lwip_accept(0) returning new sock=1 addr=192.168.1.20 port=48017
lwip_recvfrom(1, 20011170, 2048, 0x0, ..)
lwip_recvfrom: top while sock->lastdata=00000000
lwip_recvfrom: netconn_recv err=0, netbuf=200178b0
lwip_recvfrom: buflen=8 len=2048 off=0 sock->lastoffset=0
lwip_recvfrom(1): addr=192.168.1.20 port=48017 len=8
lwip_recvfrom: deleting netbuf=200178b0
lwip_send(1, data=2000e290, size=2, flags=0x0)
lwip_send(1) err=0 written=2
lwip_send(1, data=2001197c, size=8, flags=0x0)
lwip_send(1) err=0 written=8
lwip_close(1)
lwip_accept(0)…
lwip_accept(0) returning new sock=1 addr=192.168.1.20 port=47760
lwip_recvfrom(1, 20011170, 2048, 0x0, ..)
lwip_recvfrom: top while sock->lastdata=00000000
finsh />
finsh />
finsh />
此时,ping是正常的