我正在尝试编写一个非常简单的套接字程序,我基本上想要的是客户端在一段时间(真实)循环中继续监听来自服务器的通信。现在我也希望客户端能够在收听的过程中将一些数据发送回服务器。
我能想到的唯一解决方案是为读写创建一个线程,并在每次必须写入时中断读取线程。
是否有更好的解决方案,或者这是我能做到这一点的唯一方法
答案 0 :(得分:6)
您可以使用两个线程。一个用于阅读,一个用于写作。这样写入线程可以随时写入(不需要停止读取)。
另一种方法是在调用read之前在套接字上使用setSoTimeout(timeoutMs)
。如果读取的时间超过timeoutMs毫秒,则会导致它抛出SocketTimeoutException
,允许您随意写入。
答案 1 :(得分:0)
查看FTP协议规范。它使用两个套接字/通道执行您要执行的操作,一个用于命令,另一个用于数据。
答案 2 :(得分:-1)
您可以使用两个不同的端口,一个用于收听,另一个用于写入。并使用不同的线程来执行操作,然后你(while)循环不会产生问题。