Java TCP套接字超时配置

Java TCP套接字超时配置,java,windows,sockets,timeout,windows-server-2008,Java,Windows,Sockets,Timeout,Windows Server 2008,我有一个Java应用程序,它通过Java COM桥使用第三方COM组件。 此COM组件打开到远程主机的套接字连接 这个主机可能需要一些时间来响应,我怀疑我会超时。我不确定,因为正如我所说,它是一个封闭源代码的第三方组件 这个组件的API没有向我公开套接字连接,所以我无法配置超时。因此,我想知道是否有任何方法可以调整系统默认超时 我使用的是Windows Server 2008 x64企业版。您可以介绍自己的SocketImplFactory(请参阅java.net.Socket类的静态方法)。然

我有一个Java应用程序,它通过Java COM桥使用第三方COM组件。 此COM组件打开到远程主机的套接字连接

这个主机可能需要一些时间来响应,我怀疑我会超时。我不确定,因为正如我所说,它是一个封闭源代码的第三方组件

这个组件的API没有向我公开套接字连接,所以我无法配置超时。因此,我想知道是否有任何方法可以调整系统默认超时


我使用的是Windows Server 2008 x64企业版。

您可以介绍自己的SocketImplFactory(请参阅java.net.Socket类的静态方法)。然后,您可以使用自己的SO_TIMEOUT参数值创建SocketImpl对象

Microsoft的“Windows Vista Tcp Ip配置设置”中描述的用于TcpMaxDataRetransmissions的注册表设置可能允许您设置所需的全局超时


当然,您需要小心,不要在过程中由于对实际错误的延迟响应而损坏服务器的其余部分。

是否要构建应用程序,以便它在运行时知道是否发生超时,或者是否要检查封闭源COM组件的行为?如果是后者,请在开发盒上安装Wireshark并观察连接。如果是前者,您是否希望确保Java对本地的调用不会永远挂起?如果是这种情况,请查看java.util.concurrent executor服务内容——有一种方法可以在另一个线程中调用一个方法,并在将控制返回到线程之前最多等待N秒。

如果您希望看到连接建立,然后可能从超时中退出,可以使用TCPVIEW:

套接字不是由java代码创建的,而是由COM对象创建的,C++中的,我想。你是对的。嗯,我想知道在本机windows库中是否也不可能实现类似的功能。