gpt4 book ai didi

Java MulticastSocket 导致空指针异常

转载 作者:行者123 更新时间:2023-12-01 16:39:17 25 4
gpt4 key购买 nike

我正在尝试让多播套接字在“服务器”应用程序上工作,该应用程序将向一堆 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)

...我不知道为什么。

我确实有一个问题(请原谅它的无用性) - 您在多播套接字中设置的 IP 地址只是一个占位符,还是您真的必须将您的 IP 地址设置为该地址?我一半认为你可能不知道 - 另一半则尖叫着相反 - 但我在谷歌搜索答案时找不到任何东西来证实这一点 - 只是它必须是一个相当窄范围内的地址。如果我错了(我的IP是192.168.1.3),那么这就是问题所在吗?或者是别的什么。

提前致谢

史蒂夫

最佳答案

MulticastSocket 及其 joinGroup() 用于接收多播数据包。发送组播数据包与发送常规UDP数据包到组地址相同,因此需要为每个数据包设置目的地址和端口:

packet = new DatagramPacket(buffer, buffer.length, group, 4446); 
...
multisocket.send(packet);

另请参阅:

关于Java MulticastSocket 导致空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5700078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com