【问题标题】:Java DatagramSocket setting keep-alive optionJava DatagramSocket 设置 keep-alive 选项
【发布时间】:2012-03-20 03:58:30
【问题描述】:

我正在尝试创建一个 datagramsocket 和 datagrampacket 以使用 keep-alive 选项发送。我对如何设置它感到困惑。有没有像datagramsocket.setKeepAlive(true); 这样的简单方法?

编辑:抱歉,我的意思是设置数据包的生存时间。有没有办法可以设置它,如果没有收到,它会一直保留到收到?

【问题讨论】:

  • 您指的是哪个保活选项?您必须发送自己的 UDP 数据包以保持连接在 NAT 路由器等中处于活动状态。
  • 我认为你需要准确地写下你想要达到的目标。
  • Keep-alive是TCP(TCP数据包)的一个属性;生存时间 (TTL) 是 UDP(UDP 数据报和 UDP 多播“数据包”)的一个属性。奇怪的是,Java 只为 UDP 多播公开 TTL……
  • 但是TTL和keep-alive一般都是IP协议的属性。
  • @ee No. Keep-alive 只是 TCP 的一个属性。

标签: java sockets udp keep-alive datagram


【解决方案1】:

UDP 是所谓的无连接协议,即没有建立连接,您只需将数据包发送到 IP 地址/端口元组。既然没有联系,就没有什么可以维持的。

【讨论】:

  • 不,我指的是数据报包,而不是套接字。
  • 你的意思是活的时间吗?
  • 喜欢 MK。已经说过,OP应该寻找仅由Java为UDP多播MulticastSocket.setTimeToLive() method提供的UDP的TTL,而不是DatagramSocket。我想知道为什么...
  • 您可以在套接字上使用“连接的 UDP”模式(请参阅docs.oracle.com/javase/1.4.2/docs/api/java/net/…)。这里的keepalive没有意义,因为udp是无状态的。您必须在您的应用程序上实现保活机制。
猜你喜欢
  • 2016-09-07
  • 1970-01-01
  • 2023-03-07
  • 2021-07-20
  • 1970-01-01
  • 2014-06-28
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
相关资源
最近更新 更多