Я пытаюсь заставить многоадресный сокет работать на «серверном» приложении, которое будет плевать информацией на кучу телефонов 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)
... и я в недоумении, почему.
Один вопрос, который у меня есть (и оправдывает n00bishness его) - это IP-адрес, который вы задали в сокете многоадресной рассылкипросто заполнитель, или вам действительно нужно, чтобы ваш IP-адрес был установлен на это?Половина меня думает, что вы, вероятно, нет - другая половина кричит об обратном - но я не могу найти ничего, что могло бы подтвердить это, когда гуглил ответ - только то, что это должен быть адрес в довольно узком диапазоне.Если я ошибся (мой IP-адрес 192.168.1.3), то это проблема?Или это что-то еще.
Заранее спасибо
Стив