「サーバー」アプリでマルチキャストソケットを動作させようとしています。これは、多数のAndroid携帯に情報を吐き出します。ソケットのセットアップとデータの送信を担当するコード スニペットは次のとおりです。
private MulticastSocket multisocket;
private DatagramPacket packet;
private InetAddress addr;
private Question question;
byte[] buffer = "Some text to be sent".getBytes();
packet = new DatagramPacket(buffer, buffer.length);
try {
addr = InetAddress.getByName("228.5.6.7");
multisocket = new MulticastSocket(4446);
multisocket.joinGroup(addr);
} catch (IOException e) {
e.printStackTrace();
}
try {
System.out.println("Sending...");
multisocket.send(packet); // This is the line it dies on...
System.out.println("Text sent, closing socket");
multisocket.close();
} catch (IOException e) {
e.printStackTrace();
}
何が起こるかというmultisocket.send(packet);
と、次のスタック トレース情報でラインに到達して終了します。
Exception in thread "SendThread" java.lang.NullPointerException: null address || null buffer
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(Unknown Source)
at Model.QuestionSendThread.run(CommServer.java:158)
...そして、私はその理由について途方に暮れています。
私が持っている 1 つの質問 (そしてそれの不自然さを言い訳します) - マルチキャスト ソケットに設定した IP アドレスは単なるプレースホルダーですか、それとも本当に IP アドレスをそれに設定する必要がありますか? 私の半分はおそらくそうではないと思います-残りの半分は反対のことを叫んでいます-しかし、答えをグーグルで調べたときにそれを確認するものは何も見つかりません-それはかなり狭い範囲のアドレスでなければならないということだけです. これが間違っている場合 (私の IP は 192.168.1.3)、それが問題なのでしょうか? それとも別のものですか?
前もって感謝します
スティーブ