Java DatagramSocket能否接收多播数据包
我有一个在线程中运行的代码,我用它向计算机中每个网络接口的广播地址以及多播组发送数据包。详情如下:Java DatagramSocket能否接收多播数据包,java,android,udp,broadcast,multicast,Java,Android,Udp,Broadcast,Multicast,我有一个在线程中运行的代码,我用它向计算机中每个网络接口的广播地址以及多播组发送数据包。详情如下: try { String decl="Mymessage"; DatagramPacket ackdp; while(true) { Thread.sleep(3000); //First sending multicast (not broadcast) packet to a multicast group
try {
String decl="Mymessage";
DatagramPacket ackdp;
while(true)
{
Thread.sleep(3000);
//First sending multicast (not broadcast) packet to a multicast group
//231.26.179.75:37486
ackdp=new DatagramPacket(s.getBytes(),s.length(),multicastGroup,port);
BroadcastSocket.send(ackdp);
//Now sending same message to broadcast address of each of the n/w interfaces
Enumeration nwInterfaces = NetworkInterface.getNetworkInterfaces();
while(nwInterfaces.hasMoreElements())
{
NetworkInterface ni=(NetworkInterface) nwInterfaces.nextElement();
if(ni.isLoopback()||!ni.isUp())
continue;
for(InterfaceAddress ifa:ni.getInterfaceAddresses())
{
InetAddress broadcastIP=ifa.getBroadcast();
if(broadcastIP==null)
continue;
ackdp=new DatagramPacket(s.getBytes(),s.length(),broadcastIP,port);
BroadcastSocket.send(ackdp);
//port is same here :37486 (ip varies with network interface)
}
}
}
} catch (Exception ex) {ex.printStackTrace();}
我的问题是:我可以使用相同的DatagramSocket同时接收(多播和广播)数据包吗?请注意,两者都发送到同一端口。我应该在端口37486打开一个多播套接字或DatagramSocket来接收这两个数据包吗
(数据包从PC发送,但在Android上接收)
能否DatagramSocket
接收多播数据包
否,因为它无法加入多播组
您没有要求,但为了完整性:
能否DatagramSocket
发送多播数据包
对
是否可以多播套接字
接收数据报(非多播)数据包
是。我想接收广播数据包和多播数据包到一个组。如何使用
多播套接字
在同一个多播套接字中接收两个数据包(两个数据包都发送到同一端口)。我是这么说的。你自己说的。