TCP Java套接字自定义超时不仅在Docker上工作



此代码在我的计算机上完美地工作默认O.S,但不在Docker 中,我没有找到任何有关它的文档。

    clientSocket = new Socket();
    SocketAddress sockaddr = new InetSocketAddress(propertyFile.getProperty("tcp.pod.ip"),
            Integer.parseInt(propertyFile.getProperty("tcp.pod.port")));
    clientSocket.connect(sockaddr, 150);
    clientSocket.setTcpNoDelay(true);

在Docker中不起作用的部分是Clienterocket 连接超时(第二个参数(,它需要默认超时,而是我传递给他的一个。其他一切都可以完美。

我们已经测试了几个月,但是遥测仅是从我们的O.S到原型的两个访问点,因此,如果未收到ACK,因为原型已经死了,我会看到它(我们会看到它正在使用它来看看是否有通信(

使用Docker,O.S和Docker Engine之间有一个代理,因此您会看到总是有连接的,因为ACK始终从容器到O.S插座。

在应用程序层中实现保持距离的解决方案(您无法在协议层中执行此操作(。

这篇文章更好地解释了:找出是否传递了TCP的消息

最新更新