Android UDP 服务器崩溃
Crash in Android UDP server
更新:
我在这个 Android UDP 服务器示例中崩溃了:
//------------------------------------------------------------
public class AsyncReceiveUdp2 extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... f_url) {
int udp=111;
String txt="";
byte[] packet = new byte[2000];
DatagramPacket dp = new DatagramPacket(packet, packet.length);
DatagramSocket ds = null;
try {
ds = new DatagramSocket(udp);
ds.setSoTimeout(10000);
printLog("Ready");
ds.receive(dp);
printLog("Received");
...
} catch (SocketException e) {
printLog("Error1");
e.printStackTrace();
} catch (IOException e) {
printLog("Error2");
e.printStackTrace();
} finally {
if (ds != null) {
ds.close();
}
}
return null;
}
}
我收到 "error2" 消息。
原因是"java.net.SocketTimeoutException"。
它发生在 10 秒后。
但是我从另一台计算机发送了 UDP 数据包。
嗯,我不明白它是如何工作的......
请有任何想法!
抱歉多了一行,网站说我的 post 主要是代码
抱歉多了一行,该网站说我的 post 主要是代码
抱歉多了一行,该网站说我的 post 主要是代码
您不能在 UI 线程上 运行 网络线程,Android 策略禁止这样做。创建一个新线程或使用 AsyncTask
更新: 我在这个 Android UDP 服务器示例中崩溃了:
//------------------------------------------------------------
public class AsyncReceiveUdp2 extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... f_url) {
int udp=111;
String txt="";
byte[] packet = new byte[2000];
DatagramPacket dp = new DatagramPacket(packet, packet.length);
DatagramSocket ds = null;
try {
ds = new DatagramSocket(udp);
ds.setSoTimeout(10000);
printLog("Ready");
ds.receive(dp);
printLog("Received");
...
} catch (SocketException e) {
printLog("Error1");
e.printStackTrace();
} catch (IOException e) {
printLog("Error2");
e.printStackTrace();
} finally {
if (ds != null) {
ds.close();
}
}
return null;
}
}
我收到 "error2" 消息。 原因是"java.net.SocketTimeoutException"。 它发生在 10 秒后。 但是我从另一台计算机发送了 UDP 数据包。 嗯,我不明白它是如何工作的...... 请有任何想法!
抱歉多了一行,网站说我的 post 主要是代码 抱歉多了一行,该网站说我的 post 主要是代码 抱歉多了一行,该网站说我的 post 主要是代码
您不能在 UI 线程上 运行 网络线程,Android 策略禁止这样做。创建一个新线程或使用 AsyncTask