我创建了我的第一个测试应用程序来实现套接字服务器。我有一些问题让客户端接收数据,但服务器获取数据就好了。这里是服务器:Java Socket客户端没有收到数据

ServerSocket socket = new ServerSocket(11111);
System.out.println("CREATING SERVER...");
while (true) {
Socket SERVER_WORK = socket.accept();
BufferedReader clientIN = new BufferedReader(new InputStreamReader(SERVER_WORK.getInputStream()));
PrintWriter outSend = new PrintWriter(SERVER_WORK.getOutputStream());
String ClientSTR = clientIN.readLine();
System.out.println("Client 1: " + ClientSTR);
String toClient = "Hello";
outSend.write(toClient + '\n');
}

这里是客户端:

System.out.println("CONNECTING TO SERVER...");
while (true) {
Socket clientSocket = new Socket(server, 11111);
BufferedReader fromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
DataOutputStream toServere = new DataOutputStream(clientSocket.getOutputStream());
Scanner in = new Scanner(System.in);
toServere.write(in.nextLine().getBytes());
if (fromServer.ready())
System.out.println(fromServer.readLine());
clientSocket.close();
}

一切工作正常,除了客户端接收数据。

+1

尝试在服务器上使用'outSend.flush()'以确保字节实际发送而不是保存在缓冲区中。 http://stackoverflow.com/questions/2340106/what-is-the-purpose-of-flush-in-java-streams –

+1

你的“服务器”是一个客户端,而你的“客户端”是一个服务器。第一段代码永远不会关闭套接字。 'ready()'调用是毫无意义的,应该删除。您正在读取第一段代码中的行,但不会在第二段代码中发送行。 –