组播问题,MulticastSocket接收信息时被阻塞,为何接收不到数据呢?

bineon bineon 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我建立一个MulticastSocket之后,通过socket发送数据之后再接收数据,不成功,接收时被阻塞。为何呢?理论上由于有数据,那么应该不会被阻塞才对啊。
代码如下:
package recmail.multiservice;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.net.UnknownHostException;

public class MultiSender {
public static final int PORT = 8888;
public static final String ADDR = "224.0.0.8";

private MulticastSocket sock;

private InetAddress netAddr;

public MultiSender() {
try {
// 组播地址
netAddr = InetAddress.getByName(ADDR);
sock = new MulticastSocket(PORT);
sock.joinGroup(netAddr);
} catch (UnknownHostException ex) {} catch (IOException ex) {}
}

public void send(byte[] b) {
DatagramPacket dp = new DatagramPacket(b, 0, b.length, netAddr, PORT);
try {
sock.send(dp);
System.out.println("sent");
byte[] buf = new byte[1024];
DatagramPacket rcv = new DatagramPacket(buf, buf.length);
sock.receive(rcv);
System.out.println("receive:" + new String(rcv.getData()));
} catch (IOException ex) {
ex.printStackTrace();
}
}

public static void main(String[] args) {
MultiSender sender = new MultiSender();
sender.send("yhaha".getBytes());
}
}
...全文
评论 3
收藏 已收藏
分享
返回顶部
bineon
Java SE 62,620 成员 307,251 内容