组播问题,MulticastSocket接收信息时被阻塞,为何接收不到数据呢?
我建立一个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());
}
}
代码如下:
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());
}
}
...全文
相关推荐
简单组播通信
利用C#实现组播通信,简单的组播通信系统,组内发送信息。
java实现的组播聊天室
实现组内聊天的功能,通过udp协议实现 首先输入控制命令-c 若输入-c 1代表加入组1 -c exit退出组 -c nodes代表组内成员显示 其他文本输入为聊天内容
java开发的组播聊天室
java开发,运用组播技术,很不错的一个聊天室..支持多人聊天,和私聊
Java网络编程_MulticastSocket类的使用.pdf
Java网络编程_MulticastSocket类的使用.pdf
Java网络编程_MulticastSocket类的使用
Java网络编程_MulticastSocket类的使用


Java SE
