我無法將信息從客戶端發送到服務器。 輸出應該是:Java中的TCP服務器
*服務器:*
$>的Java的TcpClient /服務器IP/8080
用戶當前客戶端的ID:岩石//應該打印出來,但它沒有
。 ..
客戶
$>的Java TCPSERVER 8080
類型登錄開始
登錄 //用戶輸入
FROM SERVER:請使用您的用戶名登錄。
岩石 //用戶輸入
發送到服務器:岩石
...
但是服務器不打印出來的語句,它有需要緩衝或流做清潔向上?代碼包含在下面。
TCPSERVER代碼:
...
BufferedReader inFromClient = new BufferedReader(
new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
...
outToClient.writeBytes("Please log in with your user ID.\n");
String clientId = inFromClient.readLine()
System.out.println("User ID of the current client: " + clientId);
outToClient.writeBytes("Game has started!\n");
的TcpClient代碼:
...
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
...
System.out.println("Type login to start");
if ((inFromUser.readLine()).equals(login))
{
System.out.println("FROM SERVER: " + inFromServer.readLine());
String option = inFromUser.readLine();
outToServer.writeBytes(option);
System.out.println("Sent to Server: "+ option);
//should print "FROM SERVER: Game has started!"
System.out.println("FROM SERVER: " + inFromServer.readLine());
}
...
你試過'OutputStream.flush()'嗎? –
添加調試以查看發生了什麼。什麼'inFromUser.readLine()'返回,如果有的話? –
每個'readLine()'結果都需要先檢查爲null,然後再執行其他任何操作。 – EJP