Java-Beispiele – Beispiel für ServerSocket- und Socket-Kommunikation
Das folgende Beispiel zeigt, wie der Client eine Nachricht an den Server sendet, der Server die Nachricht empfängt und die Ausgabe liest, sie dann an den Client schreibt und der Client die Ausgabe empfängt.
1. Serverseite einrichten
- Der Server erstellt einen ServerSocket für die Kommunikation
- Der Server erstellt einen Socket, um Client-Verbindungen zu akzeptieren
- Einen IO-Eingabestream erstellen, um vom Client gesendete Daten zu lesen
- Einen IO-Ausgabestream erstellen, um Datennachrichten an den Client zu senden
Serverseitiger Code:
Server.java-Datei
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
System.out.println("Server wird gestartet....");
Socket s = ss.accept();
System.out.println("Client:"+s.getInetAddress().getLocalHost()+"Mit dem Server verbunden");
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//Lies die vom Client gesendete Nachricht
String mess = br.readLine();
System.out.println("Client:"+mess);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write(mess+"\n");
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Die Ausgabe beim Ausführen des obigen Codes ist:
Start server....
2. Clientseite einrichten
- Socket-Kommunikation erstellen, IP und Port des Kommunikationsservers festlegen
- Einen IO-Ausgabestream erstellen, um Datennachrichten an den Server zu senden
- Erstelle einen IO-Eingabestream, um vom Server gesendete Datennachrichten zu lesen
Clientseitiger Code:
Client.java-Datei
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) {
try {
Socket s = new Socket("127.0.0.1",8888);
//IO aufbauen
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
//Eine Nachricht an die Serverseite senden
bw.write("Die Kommunikation zwischen Client und Server testen; der Server empfängt die Nachricht und sendet sie an den Client zurück\n");
bw.flush();
//Die vom Server zurückgegebene Nachricht lesen
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String mess = br.readLine();
System.out.println("Server:"+mess);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Die Ausgabe beim Ausführen des obigen Codes ist:
Server: Testing communication between client and server; the server receives the message and returns it to the client.Andere Erweiterungen