java中广播和多播代码的区别
我需要在网络中发送java中广播和多播代码的区别,java,sockets,Java,Sockets,我需要在网络中发送UDP广播。但我感到困惑。我所知道的是,广播不是特定于地址的,多播是特定于组(地址)的 因此,我使用DatagramSocket从网络发送和接收datagrampackes 我正在编写的代码是: public class ComputerSender implements Runnable { MulticastSocket socket; DatagramPacket packet; String command; public Compute
UDP广播
。但我感到困惑。我所知道的是,广播不是特定于地址的,多播是特定于组(地址)的
因此,我使用DatagramSocket
从网络发送和接收datagrampackes
我正在编写的代码是:
public class ComputerSender implements Runnable
{
MulticastSocket socket;
DatagramPacket packet;
String command;
public ComputerSender(String MAC)
{
try
{
socket = new MulticastSocket();
JSONManager json = new JSONManager(MAC, WifiConstants.COMPUTER_NET_SCAN);
json.setRecvMAC(WifiConstants.COMPUTER_NETWORK_ADDR);
InetAddress addr = InetAddress.getByName(WifiConstants.COMPUTER_NETWORK_ADDR);
command="Hello";
}
catch(Exception e)
{
Log.v("Exception:","Computer Constructor Error: "+e.toString());
}
}
@Override
public void run()
{
try
{
System.out.println(command);
packet=new DatagramPacket(command.getBytes(),command.getBytes().length,InetAddress.getByName(WifiConstants.COMPUTER_NETWORK_ADDR), WifiConstants.COMPUTER_SEND_PORT);
socket.setTimeToLive(100);
socket.send(packet);
System.out.println("Packet Sent");
Thread.sleep(200);
}
catch(Exception e)
{
Log.v("Packet Sending Error: ","Computer Error: "+e.getMessage());
}
finally
{
socket.close();
}
}
}
我无法预测上面的代码是用于广播或多播的。如果是广播,那么我需要对多播进行哪些更改。如果是多播,那么我需要为Boradcast带来什么变化。这取决于
WifiConstants.COMPUTER\u NETWORK\u ADDR
的值
对于广播,它需要是您的网段的广播地址。例如,如果您的IP地址为10.1.2.3,子网掩码为255.255.0.0,则10.1.255.255是广播地址
但是,多播地址使用多播地址范围中的组地址
根据IANA():
多播地址在范围内
224.0.0.0至239.255.255.255
因此,如果目标IP地址在该范围内,例如224.224.1.2,则在该多播组地址上侦听的任何客户端都将收到您的数据包。我是否应该使用DatagramSocket或多播Socket进行广播,…?DatagramSocket。我不确定如果使用MulticastSocket进行广播会发生什么,但我怀疑它不会做任何令人满意的事情。您可以使用其中任何一种进行发送。您必须使用多播套接字来接收多播。谢谢@EJP。很高兴知道