我有一個客戶端服務器問題,具有以下獨特要求: 1.服務器必須打開已知客戶端的N個連接,並且客戶端只能使用這些連接來請求數據服務器。Java套接字:打開從服務器到客戶端的連接
到目前爲止,我試着做以下,但遇到了一些問題:
在客戶端上的套接字監聽器,並把它接收到一個ArrayBlockingQueue排隊的每個連接。
客戶端應用將使用在隊列中可用連接到上述請求數據從服務器
我在服務器上創建每個插槽一個線程(工人)和監聽到N工作線程的數據請求。
當我在工作線程中等待傳入請求時(使用服務器)我使用InputStream.isAvailable()來檢查是否有等待讀取的內容。
問題:服務器端的工作線程不知道套接字連接是否仍然存在或不存在?即使在客戶端應用程序關閉套接字後,它們仍繼續監聽請求。
如何讓服務器感知套接字連接是否仍然存在?
我在這裏採取正確的方法嗎?
是否有一個框架,將使實施更容易和更好?
關閉時發送消息到服務器。或者,使所有連接在特定級別的不活動之後超時?我相信這會自動發生,但您也可以設置顯式超時。 – Sanchit
您引用的問題不存在。客戶端關閉時服務器將讀取EOS。 – EJP