<分区>
我正在尝试编写一个非常简单的套接字程序,我基本上想要的是客户端在 while(true) 循环中不断监听来自服务器的通信。现在我还希望客户端能够在监听过程中将一些数据发送回服务器。
我能想到的唯一解决方案是为读写创建一个线程,并在每次我必须进行写入时中断读取线程。
是否有更好的解决方案或者这是我能做到的唯一方法
<分区>
我正在尝试编写一个非常简单的套接字程序,我基本上想要的是客户端在 while(true) 循环中不断监听来自服务器的通信。现在我还希望客户端能够在监听过程中将一些数据发送回服务器。
我能想到的唯一解决方案是为读写创建一个线程,并在每次我必须进行写入时中断读取线程。
是否有更好的解决方案或者这是我能做到的唯一方法
最佳答案
您可以使用两个线程。一种用于阅读,一种用于写作。这样写线程就可以随时写(不需要停止读)。
另一种方法是在调用 read 之前在套接字上使用 setSoTimeout(timeoutMs)
。如果读取时间超过 timeoutMs 毫秒,这将导致它抛出 SocketTimeoutException
,然后您可以随意写入。
关于java - Socket同时读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12807808/