2014-03-12 49 views
2

我在做java服務器客戶端應用程序,並且遇到問題。當我想讓ObjectInputStream卡住時,我成功地獲得了客戶端的套接字。Java:不能從套接字獲取ObjectInputStream

代碼:

serverSocket = new ServerSocket(9999); 

while(true){ 
    System.out.println("Waiting for player"); 
    Socket socket = serverSocket.accept(); 
    System.out.println("Player connected, waiting for command"); 

    ObjectInputStream in = new ObjectInputStream(socket.getInputStream()); 
    System.out.println("input created");  
} 

輸出:
Waiting for player Player connected, waiting for command

我能做些什麼錯?

回答

6

ObjectInputStream等待傳入的標題。直到頭部被完全地接受你將在此行被卡住:

ObjectInputStream in = new ObjectInputStream(socket.getInputStream()); 

來解決這個問題,需要儘快建立連接上的ObjectOutputStream調用flush()另一側(即服務器)。

欲瞭解更多信息,請閱讀javadoc

+1

謝謝,它的幫助。 – user3412372