我使用的是RCM6600W,其代码大约每80毫秒调用一次tcp_tick()。

如果我建立一个连接,接收少量数据,等待15秒,然后调用sock_close,我发现等待30秒并没有提供足够的时间来真正完全关闭套接字(即sock_alive()仍然表示套接字在30秒后是活动的)。

当sock_close被调用时,它看起来像兔子发送FIN/ACK,而我认为它应该只是发送FIN,然后等待服务器的FIN/ACK,最后接受关闭连接的ACK(如果维基百科是可信的)。

不确定是否有适当的偏离过程,但我认为事情正在崩溃,因为Windows从未发送FIN或FIN/ACK来响应兔子的FIN/ACK。我现在正在看看sock_close在幕后是如何工作的,看看我是否可以修改它,只在close时发送FIN。

到那时,希望一切都能落实到位。

您可以使用sock_abort()来立即关闭连接。

1像