【发布时间】:2019-10-03 13:54:06
【问题描述】:
我正在通过 UDP 协议发送一些数据包,但应用程序在 UDP 类的这一部分(如下所示)因 NetworkOnMainThreadException 错误而崩溃:
client_socket.send(send_packet);
通过搜索错误,我发现在这种情况下应该使用 AsyncTask(我对此不确定,任何想法)。那么我怎样才能在这段代码中实现 AsynkTask 以解决错误呢?下面是我的 UDP 类:
public class CheckIP {
private String CheckState;
private String IP;
//UDP IP Seraching
private byte[] send_data = new byte[1024];
private byte[] receiveData = new byte[1024];
public CheckIP(final String BN, final Context context) throws IOException {
DatagramSocket client_socket = new DatagramSocket(2222);
InetAddress IPAddress = InetAddress.getByName("255.255.255.255");
String str = String.valueOf(BN.charAt(7) + BN.charAt(5) + BN.charAt(8) + BN.charAt(3));
send_data = str.getBytes();
DatagramPacket send_packet = new DatagramPacket(send_data, str.length(), IPAddress, 2222);
client_socket.send(send_packet);
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
client_socket.receive(receivePacket);
CheckState = "true";
IP = receivePacket.getAddress().toString();
}
public String getIP() {
return IP;
}
public String getCheckState() {
return CheckState;
}
}
以及我 home.class 中的相关代码:
additembtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
try {
Buildnumber = "123456789";
CheckIP checkIP = new CheckIP(Buildnumber,home.this);
if (checkIP.getCheckState().equals("true")){
//show Toast
}else{
//show Toast
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
【问题讨论】:
标签: java android exception android-asynctask