我有一个具有以下独特要求的客户端服务器问题: 1. 服务器必须打开到已知客户端的 N 个连接,并且客户端只能使用这些连接从服务器请求数据。
到目前为止,我尝试执行以下操作,但遇到了一些问题:
在客户端上有一个套接字侦听器,并将接收到的每个连接排入 ArrayBlockingQueue。
客户端应用程序将使用上面队列中可用的连接从服务器请求数据
我在服务器上为每个套接字创建一个线程(工作线程),并通过 N 个工作线程监听数据请求。
当我在工作线程中等待传入请求时(在服务器上),我使用 InputStream.isAvailable() 检查是否有东西等待读取。
问题:服务器端的工作线程不知道套接字连接是否仍然有效?即使在客户端应用程序上的套接字关闭后,它们也会继续侦听请求。
如果套接字连接仍然有效,我怎样才能让我的服务器有意义?
我在这里采取了正确的方法吗?
是否有一个框架可以使实施更容易和更好?