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

bineon 2007-09-07 06:07:56
我建立一个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());
}
}
...全文
854 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
on_way_ 2012-06-14
  • 打赏
  • 举报
回复
public void send(byte[] b) {
DatagramPacket dp = new DatagramPacket(b, 0, b.length, netAddr, PORT);


你可以改成
public void send(byte[] b) {
DatagramPacket dp = new DatagramPacket(b, b.length, netAddr, PORT);
bineon 2007-09-09
  • 打赏
  • 举报
回复
没刷新是什么意思啊?
JAVA_JAVA_JAVA 2007-09-07
  • 打赏
  • 举报
回复
你是不是没刷新啊!

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧