Ich habe eine einfache Klasse erstellt, die eine Zeichenfolge an einen Server sendet. Beide kommunizieren über die Java Sockets-API. Der Server liest, was der Client gesendet hat, und antwortet mit einer anderen Zeichenfolge. Aber der Client kann diese Antwort nicht lesen.Server-Antwort mit Java-Sockets-API lesen
Dies ist die Client-Klasse:
import java.io.IOException;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 8181);
socket.getOutputStream().write("Hello".getBytes());
int read;
while ((read = socket.getInputStream().read()) > -1) {
System.out.print((char) read);
}
socket.close();
}
}
Und dies ist die Serverklasse:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8181);
while (true) {
Socket socket = serverSocket.accept();
int read;
while ((read = socket.getInputStream().read()) > -1) {
System.out.print((char) read);
}
socket.getOutputStream().write("Hi!".getBytes());
}
}
}
Ich stelle ich vor, dass das Problem in dem Client-Ausführungsablauf sein kann, weil ich weiß, don `t Wie kann ich auf eine Serverantwort warten? Mit anderen Worten, wie kann man einen Client implementieren, der die Serverantwort lesen kann?
Das ist richtig, wegen der 'while ((= socket.getInputStream(). Read())> -1)' der Server wartet, bis der Client die Verbindung schließt. –