我无法将信息从客户端发送到服务器。 输出应该是: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