ネットワークで送信する必要がありUDP Broadcast
ます。しかし、私は混乱しています。私が知っているのは、ブロードキャストはアドレス固有ではなく、マルチキャストはグループ (アドレス) 固有です。
なので、ネットワークからの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 にどのような変更を加える必要があるか。