2013-02-10 95 views
0

试图获取套接字的句柄。服务器和客户端运行在两个不同的程序中。Java套接字 - 服务器在客户端发送响应后挂起

它们似乎彼此很好地连接,但客户端不会正确地将其输出发送到服务器。服务器挂起。下面的代码:

服务器:

private ServerSocket serverSocket; 
    private Socket client; 

    public void run() throws Exception { 
    serverSocket = new ServerSocket(20005); 
    while(currentState == Game.State.NORMAL) { 
     client = serverSocket.accept(); 
     PrintWriter out = new PrintWriter(client.getOutputStream(), true); 
     BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); 
     String clientInput = in.readLine(); 

     // Takes the client input string and does some simple game logic that returns a Gson object 
     Gson serverResponse = processInput(clientInput); 
     out.write(serverResponse.toString()); 
     out.flush(); 
    } 
    } 

客户:

插座ClientSocket的;

void run() throws Exception { 
    clientSocket = new Socket("192.168.0.24", 20005); 
    PrintWriter out; 
    BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 

    // Print the state of the game - returns false if state is win or lose. 
    while(printState()) { 
     out = new PrintWriter(clientSocket.getOutputStream(), true); 
     // This method just takes some input from the console 
     String clientInput = getInput(); 

     out.write(clientInput); 
     out.flush(); 

     String serverResponse = in.readLine(); 

     updateState(serverResponse); 
    } 
    } 
} 

有一些潜在的游戏逻辑正在发生,但它很小,应该是无关紧要的。我想我只是误解了这里的根本。

谢谢大家。

回答

2

请确保您发送换行符以匹配Server中的in.readLine()语句。 >Client -

out.write(clientInput + "\n"); 

Server发送数据时同applys。

+0

哇,我是个白痴。谢谢。 – Slims 2013-02-10 01:25:23

相关问题