【发布时间】:2015-05-03 23:25:48
【问题描述】:
更新: 我在这个 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 数据包。 嗯,我不明白它是如何工作的...... 请有任何想法!
对不起,多余的行,该网站说我的帖子主要是代码 对不起,多余的行,该网站说我的帖子主要是代码 抱歉多说一句,网站说我的帖子主要是代码
【问题讨论】:
-
你在真机上试过了吗?
-
你是在不同的线程上运行它吗?
-
我们能看到 MyActivity 类的第 129 行吗?
-
第 129 行是“ds.receive(dp);”。不,我在主线程中运行。我没有在设备上尝试过,因为必须在模拟器上调试。谢谢
-
不要在ui线程上运行网络任务