我需要在网络中发送UDP Broadcast
。但我感到困惑。我所知道的是广播不是地址特定的,多播是组(地址)特定的。java中广播和多播代码的区别
所以,我使用DatagramSocket
发送和接收来自网络的DatagramPackets
。
我写的代码是什么:
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带来什么变化。
应该使用DatagramSocket还是Multicast Socket进行广播,..? – 2013-05-12 21:04:06
DatagramSocket。我不确定如果您使用MulticastSocket进行广播会发生什么情况,但我怀疑它不会做任何希望的事情。 – Brandon 2013-05-12 21:15:07
您可以使用任一方式发送。您必须使用MulticastSocket来接收多播。 – EJP 2013-05-12 23:00:46