【问题标题】:Java MulitcastSocket receive Method "Blocks a Program"?Java MulitcastSocket 接收方法“阻止程序”?
【发布时间】:2012-01-16 06:30:23
【问题描述】:

我正在用 Java 编写一个类来简化连接、加入、发送和接收来自多播组的数据的过程。在这一点上,我在使用 Java 的 MulticastSocket 类中的 receive() 方法时遇到了问题。每当我使用这种方法时,整个程序都会暂停,直到收到数据。

我想知道是否有办法让它只听给定的持续时间,比如 5 秒?

这是我正在做的非常基本代码示例。请注意,它与我的实际代码完全不同,除了异常捕获、导入语句等......它只是展示了我的类在如何利用 Java 的多播能力方面的基本流程:

//Connect to the multicast host, and join the group
  MulticastSocket msConn = new MulticastSocket(5540);
  InetAddress netAddr = InetAddress.getByName("239.255.255.255");
  msConn.joinGroup(netAddr);

//Preapre a datagram packet in which to place recieved data
  byte buf[] = new byte[1024];
  DatagramPacket pack = new DatagramPacket(buf, buf.length);

//PROBLEM: Code halts here until data is recieved
//Accoding the the Java Docs it says that
//"This method blocks until a datagram is received."
  msConn.recieve(pack);

感谢您的宝贵时间。

【问题讨论】:

    标签: java multicast multicastsocket


    【解决方案1】:

    使用setSoTimeout() 方法设置接收数据报的超时时间。然后,根据recieve() 的文档,如果您的超时已过,它将抛出SocketTimeoutException,允许您继续执行您的程序。

    【讨论】:

      猜你喜欢
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多