9

我正在尝试编写一个非常简单的套接字程序,我基本上想要的是客户端在 while(true) 循环中不断侦听来自服务器的通信。现在我还希望客户端能够在监听的过程中将一些数据发送回服务器。

我能想到的唯一解决方案是为读取和写入创建一个线程,并在每次我必须进行写入时中断读取线程。

有更好的解决方案还是这是我能做到的唯一方法

4

3 回答 3

6

您可以使用两个线程。一个用来读,一个用来写。这样写线程可以随时写(不需要停止读取)。

另一种方法是setSoTimeout(timeoutMs)在调用 read 之前在套接字上使用。如果读取时间超过 timeoutMs 毫秒,这将导致它抛出一个SocketTimeoutException错误,从而允许您随心所欲地编写。

于 2012-10-09T20:22:04.693 回答
0

查看 FTP 协议规范。它使用两个套接字/通道来完成您打算做的事情,一个用于命令,一个用于数据。

于 2012-10-09T20:30:52.000 回答
-1

您可以使用两个不同的端口,一个用于侦听,一个用于写入。并使用不同的线程来执行操作,那么您的 while(true) 循环不会产生问题。

于 2012-10-09T20:30:00.207 回答