为了账号安全,请及时绑定邮箱和手机立即绑定

TCP Java Socket 自定义超时不仅仅适用于 docker

TCP Java Socket 自定义超时不仅仅适用于 docker

慕尼黑的夜晚无繁华 2023-02-23 16:53:22
这段代码在我的机器默认操作系统上完美运行,但在 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 中不起作用的部分是 clientSocket连接超时(第二个参数),它采用默认超时而不是我传递给他的超时。其他一切都完美无缺。
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

我们已经测试了几个月,但遥测只是从我们的操作系统通过两个访问点到原型,所以如果因为原型死亡而没有收到确认,我会看到它(我们用它来查看是否有通信)

使用 docker,在操作系统和 docker 引擎之间有一个代理,所以你会看到总是有连接,因为 acks 总是从容器到达操作系统套接字。

在应用层实现keep alive的解决方案(在协议层不能实现)。

这篇文章更好地解释了它:找出是否通过 tcp 传递了一条消息


查看完整回答
反对 回复 2023-02-23
  • 1 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信