【发布时间】:2012-03-13 19:28:29
【问题描述】:
我正在尝试使用 Java TCP 服务器和 Android 客户端为 Android 创建一个基本的多人游戏。问题是发送 TCP 数据包时速度慢。当我输入 Thread.sleep(100) 时,它就可以工作了。
服务器端:
for(int i = 0; i<50; i++) {
client.send("test_" + i);
}
客户端刚刚收到(~3 个数据包)
测试_0
测试_1
休眠的服务器:
for(int i = 0; i<50; i++) {
client.send("test_" + i);
Thread.sleep(100);
}
客户收到 ~45
编辑:客户端:
while (true) {
if (!running)
break;
inFromServer = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"), 2 * 1024);
String rawRecervied = inFromServer.readLine();
if (rawRecervied == null) {
close();
break;
}
final String recervied = rawRecervied.substring(2); // for skip utf bom chars
new Thread() {
public void run() {
listener.dataRecervied(recervied);
Log.e("TCP recervied", recervied); // debug
}
}.start();
}
【问题讨论】:
-
尝试 BWitched 建议在 while(true) 之外创建 BufferedReader
-
您的问题是什么?是关于丢包,根据标题,还是慢速,根据正文?