TCP服务器忽略传入的SYN

问题描述 投票:0回答:1

我正在运行一个tcp服务器。客户端连接到服务器并定期发送数据包。对于TCP服务器,此传入连接变为CONNECTED,并且服务器套接字仍在侦听其他连接。

说这个客户端突然断电,没有FIN发送到服务器。再次开机时,它仍然使用相同的端口进行连接,但是服务器不回复SYNC请求。它只忽略传入的请求,因为与此端口存在连接。

如何让服务器关闭旧连接并接受新连接?

我的tcp服务器在Ubuntu 14.04上运行,它是使用ServerSocket的Java程序。

linux
1个回答
0
投票

这是不正确的,服务器可以接受多个连接,并且只要它是从其他端口进行连接,就可以接受来自重新启动的客户端的新连接(通常是这种情况)。如果您的程序不接受它,那是因为您没有第二次调用accept()。这可能意味着您的应用程序每次仅处理一次阻塞操作(例如,它可能卡在连接的套接字上的read()操作中)。解决方案是同时读取连接的套接字并接受新的连接。这可以使用I / O复用器(如select()或多个线程)完成。

© www.soinside.com 2019 - 2024. All rights reserved.