一部のデバイスが同じ別のデバイスにパケットを送信する必要があるネットワーク アプリケーションを作成したいと考えています。このデバイスは Android のデバイスです。私の考えは、メッセージをネットワークにブロードキャストして、デバイスがそれを取得できるようにすることです。インターネットで調べたところ、1 つの解決策が MulticastSocket である可能性があることがわかりました。javadoc のチュートリアルに従っていますが、これは非常に簡単です。Androidフォンと1台のコンピューターでそれを行いました。私が今抱えている問題は、このソケットをポート 80 にバインドしたいという事実です。事実上、ソケットを作成しようとするとエラー、より正確には EACCES が発生します。これが私のサーバーのコードです:
public class MyServer extends Thread {
private int port;
private boolean isRunning = true;
private MulticastSocket socket;
private InetAddress group;
public MyServer(int port) {
this.port = port;
isRunning = true;
}
public void run() {
socket = null;
try {
socket = new MulticastSocket(80);
group = InetAddress.getByName("coucou");
socket.joinGroup(group);
} catch (IOException e) {
e.printStackTrace();
return;
}
while (isRunning) {
DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);
try {
socket.receive(packet);
Log.i("Server", "Packet received");
MyCipher rec = new MyCipher(Arrays.copyOfRange(packet.getData(), 0, packet.getLength()));
Receiver.getInstance().put(rec);
} catch (IOException e) {
e.printStackTrace();
}
}
socket.close();
}
public void mustStop() {
this.notify();
isRunning = false;
}
}
誰かがそれを修正する方法を知っていますか? さらに、グループの名前がサーバーのIPでなければならないのか、それとも「ランダムな」文字列なのか誰かが知っていますか?
ありがとうございました !