可用對象當Server
和Client
使用字符串進行通信(使用BufferedReader
和PrintWriter
類)時,BufferedReader
類有一個叫做ready()
方法,這意味着有等待客戶端抓住和串處理。這種方法也使服務器與2個線程,這是我想要實現的。檢查從插座中使用的ObjectInputStream
當使用ObjectInputStream
和ObjectOutputStream
類,OIS
類不具有「準備就緒()」方法,代替它具有所謂的「可用的()」,它返回可用的字節數被處理方法。問題是,available()
方法返回0,每次和OIS缺乏「準備就緒()」方法使服務器是多線程(線程1爲每個連接加上主線程),這不是我想要的。
那麼,有沒有一種方法來檢查Server
是否已經「收到」來自ObjectInputStream
在Socket
的Object
,而無需創建並保持一個Thread
爲每個連接?
如果你不希望一個線程每客戶端比,使用NIO,它使用一個選擇器來查看數據是否可用,或者連接可用。您將'Selector'註冊到套接字。然後,您有1個線程檢查選擇器是否有可用的鍵。我有一個如何建立一個選擇[這裏](http://stackoverflow.com/questions/24616774/non-socket-based-java-server/24617983#24617983) – 2014-11-06 00:10:33
@VinceEmigh這是很好的一個例子。我需要看看一些API,但這肯定有幫助。謝謝。 – 2014-11-06 00:17:08