杀死正在等待套接字输出的线程

发布于 2024-10-07 15:02:47 字数 319 浏览 4 评论 0原文

嘿 作为项目的一部分,我必须编写一个小型 IRC 客户端来嵌入其中。一切都运行良好,直到程序关闭并且从 IRC 通道读取输入的线程正在等待更多输入并且永远不会死亡。

while(((inBuffer=in.readLine())!=null)&&(die==false))

inBuffer 只是一个字符串,in 是套接字上的缓冲读取器。 die 变量是一个布尔值,我的想法是我可以将其设置为 true,它就会从线程中掉出来。问题是“inBuffer=in.readLine()”一直坐在那里,直到它得到另一行。
有人可以帮我吗?

hey
As part of a project ive had to write a small IRC client to embed in it. Everything works nicely until the program is closed and the thread that reads input from the IRC channel is waiting for more input and never dies.

while(((inBuffer=in.readLine())!=null)&&(die==false))

inBuffer is simply a string and in is a buffered reader on the socket.
the die variable is a boolean and my thought was that i can set that to true and it will fall out the thread. The problem is that "inBuffer=in.readLine()" is sitting there until it gets another line.
Can someone give me a hand?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

征﹌骨岁月お 2024-10-14 15:02:47

关闭 in 流,readLine() 应立即返回 null

Close the in stream, readLine() should then return null instantly.

玩心态 2024-10-14 15:02:47

您可以在套接字上设置超时,如果遇到超时异常,则可以轮询中止标志。如果未设置,请重试读取。

You could set a timeout on the socket and if you get a timeout exception, you can poll a abort-flag. If it's unset, try again to read.

浅笑轻吟梦一曲 2024-10-14 15:02:47

关闭输入套接字。这会将 null 传递给 readLine() 调用并终止循环。

Shutdown the socket for input. That will deliver a null to the readLine() invocation and terminate the loop.

清醇 2024-10-14 15:02:47

忘记 bufferedReader 有一个“ready()”方法来测试缓冲区中是否有任何内容。测试这个就成功了。

forgot bufferedReader had a "ready()" method to test if it has anything in the buffer. testing this did the trick.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文