我正在使用ServerSocket
来侦听尝试连接的客户端的网络。换句话说,我打电话给ServerSocket.accept()
来“找到”客户。这立即建立了TCP连接,事实证明这有点麻烦。
在我的情况下建立连接的目的是使用它从我的身边(服务器端)启动一些协议的特定握手。不幸的是,这种握手需要得到用户(也是服务器端)的批准。这意味着连接可以在被消耗之前保持打开和空闲任意时间量,有点像保持电话呼叫。
由于某种原因,一些客户端(我无法控制)在建立连接后立即启动超时(尽管该协议的规范没有说明超时或服务器及时启动握手)。所以当前发生的事情是,即使握手成功启动,中间的某个地方也可能会失败,因为服务器端等待太长时间才能完成协议的身份验证阶段。
有没有办法以人类可读的形式列出入站客户端连接而不接受并因此创建TCP连接,那么可以手动选择其中一个接受吗?如果不是通过ServerSocket
,也许还有其他方式?
相关:通过首先盲目地接受入站连接然后在某个稍后的任意时间点决定是否解雇或实际使用连接来实现“服务器端连接过滤”是否被认为是通常的做法?我不知道如何以任何其他方式使用ServerSocket
。