lwip_tcp_server_connection_close可以在tcp_poll回调函数中调用吗
时间: 2023-08-01 16:15:47 浏览: 144
lwipTCP.rar_TCP UDp_lwip tcp _lwipTCP_tcp server_tcp/udp
不建议在`tcp_poll`回调函数中调用`lwip_tcp_server_connection_close()`函数关闭TCP连接。因为,`tcp_poll`回调函数是在轮询过程中被调用的,它的执行时间是不确定的,可能会引起竞态条件,从而导致应用程序出现不可预期的错误。
通常情况下,建议在TCP连接关闭的事件处理函数中调用`lwip_tcp_server_connection_close()`函数。这些事件包括`ERR_RST`、`ERR_CLSD`、`ERR_ABRT`等。在这些事件中,lwIP已经关闭了TCP连接,并且不再轮询`tcp_poll`回调函数。
如果确实需要在`tcp_poll`回调函数中调用`lwip_tcp_server_connection_close()`函数,应该先停止轮询过程,然后再关闭TCP连接。具体来说,可以设置一个标志位或者调用`tcp_abort()`函数来停止TCP连接的轮询过程,然后在下一次轮询时关闭TCP连接。
总之,为了避免出现竞态条件和其他问题,建议在TCP连接关闭的事件处理函数中调用`lwip_tcp_server_connection_close()`函数,而不是在`tcp_poll`回调函数中调用。
阅读全文