![]() |
1
3
我误解了这个问题。这是我认为你应该做的。
|
![]() |
2
1
如果您使用的是blocking read()命令,那么您几乎应该总是有另一个控制线程负责关闭它并清理套接字。 不过,通常情况下,我会使用一个在1秒左右超时的select()调用来测试是否有要读取的数据,并且每个超时周期都会检查另一个线程是否设置了关闭状态标志。 但是,如果您使用纯阻塞,请按照您的建议使用控制线程。 |
![]() |
3
1
我会用一个不规则的套接字通信。我写了一篇文章在我的博客上演示了这一点。你可以在这里阅读: 安得烈 |
![]() |
4
0
我有点困惑你到底在做什么:在.NET中没有套接字类的read()方法。 我的建议是创建第二个套接字,它监听一个特定的端口,并让线程块 Socket.Select 相反。连接到第二个套接字应被视为关闭请求(可能在适当的身份验证之后,例如通过该套接字发送应用程序密码)。 |
![]() |
5
-1
另一种方法是,当您想关闭应用程序时,将0字节的数据包从您自己的应用程序中的其他位置发送到您的侦听套接字。 我发现这是一个比从另一个线程关闭coket更干净的方法,因为如果关闭它的套接字,侦听线程将抛出异常。 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
![]() |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
![]() |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
![]() |
rhymes · 如何让线程操作相同的java列表 2 年前 |