【发布时间】:2023-03-30 22:57:01
【问题描述】:
我正在尝试制作一个简单的聊天服务器/客户端应用程序。我的服务器是用 python 制作的,使用了 twisted。一切正常,用 telnet 测试过。
基本上,服务器将收到的每条消息都发送给它的所有客户端。我需要一种从套接字永久读取的方法,以便我可以获取所有消息。我不认为这是最好的方法,但我尝试使用一个永远读取的线程(现在)。客户端连接到服务器后,它将启动一个线程,该线程将永远检查更新。
这是我实现 Runnable 的 CheckUpdates 类:
class CheckUpdates implements Runnable{
@Override
public void run() {
Log.d("ME", "CHECKING FOR UPDATES");
while(true)
{
// reader.lines().forEach(System.out.println);
String line;
Log.d("ME","IN WHILE");
try {
while ((line = reader.readLine()) != null) {
Log.d("ME", "READING LINE");
Looper.prepare();
Toast.makeText(MainActivity.this, line, Toast.LENGTH_SHORT).show();
Looper.loop();
}
} catch (IOException e) {
Log.d("ME", "EXCEPTION IN WHILE: " + e.getMessage().toString());
}
Log.d("ME", "END OF WHILE CHECK UPDATES");
}
}
}
我在连接到服务器后立即启动线程。 基本上,我收到了第一条消息(第一次祝酒),然后就没有其他消息了,甚至没有 END OF WHILE CHECK UPDATES logcat 消息。
在检查来自 socket 的新行时,它会永远卡住吗? 另外,如果有更优雅的方式来做到这一点,如果有人能指出我正确的方向,我将不胜感激。
【问题讨论】:
标签: java android sockets asyncsocket