空指针异常问题
public class UdpClientBiz {
//服务器IP
private String mServerIp = "192.168.95.2";
//服务器端口号
private int mServerPort = 7777;
//服务器的InetAddress
private InetAddress mServerAddress;
//DatagramSocket
private DatagramSocket datagramSocket;
public UdpClientBiz() {
try {
//通过服务器IP获取服务器的InetAddress对象
mServerAddress = InetAddress.getByName(mServerIp);
//实例化DatagramSocket对象
this.datagramSocket = new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
//用来处理服务器返回的数据
public interface OnReturnedMsgListener {
void handleMsg (String msg);
}
//向服务器发送、接收数据
public void sendAndReceiveMsg (final String msg, final OnReturnedMsgListener listener) {
new Thread(new Runnable() {
@Override
public void run() {
try {
//发送数据到服务器
byte[] clientMsgBytes = msg.getBytes();
DatagramPacket clientPacket = new DatagramPacket(clientMsgBytes, clientMsgBytes.length,
mServerAddress, mServerPort);
datagramSocket.send(clientPacket);
//从服务器接收数据
byte[] buf = new byte[1024];
DatagramPacket serverMsgPacket = new DatagramPacket(buf, 0, buf.length);
datagramSocket.receive(serverMsgPacket);
//处理从服务器接收的数据
listener.handleMsg(new String(serverMsgPacket.getData()));
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}在执行
datagramSocket.send(clientPacket);
的时候报了一个DatagramSocket的空指针异常,为何?
15
收起
正在回答 回答被采纳积分+1
1回答
Android数据通信开发与应用2018版
- 参与学习 人
- 提交作业 147 份
- 解答问题 687 个
本专题介绍了Android开发核心组件:广播、服务及全局应用。教会你如何使用AIDL、Thread、Socket、蓝牙解决进程线程间通信问题。利用Glide等实现异步加载及NDK原生代码开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星