gpt4 book ai didi

java - 永远从 socket bufferreader 读取 android

转载 作者:行者123 更新时间:2023-11-29 05:13:11 25 4
gpt4 key购买 nike

我正在尝试制作一个简单的聊天服务器/客户端应用程序。我的服务器是用 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");
}
}
}

我在连接到服务器后立即启动线程。基本上,我收到了第一条消息(第一个 toast ),紧接着,没有其他消息进来,甚至 END OF WHILE CHECK UPDATES logcat 消息也没有。

它是否会永远卡在 while 从 socket 检查换行的过程中?此外,如果有更优雅的方式来做到这一点,如果有人能指出我正确的方向,我将不胜感激。

最佳答案

Could it get stuck forever in the while that checks for a new line from socket ?

不,但它可能永远卡在外部 while (true) 循环中,这是完全没有意义的。去掉它。此刻你在流的尽头永远循环。

关于java - 永远从 socket bufferreader 读取 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27542808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com