18 Netzwerkprogrammierung in Java

18.1 Sockets und Ports

Sockets bieten die Endpunkte für die Kommunikation zwischen zwei Maschinen.

18.1.1 Beispiel für einen einfachen Server-Socket

import java.net.ServerSocket;
import java.net.Socket;

try (ServerSocket serverSocket = new ServerSocket(8080)) {
    Socket clientSocket = serverSocket.accept();
    // Kommunikation mit dem Client
} catch (Exception e) {
    // Fehlerbehandlung
}

18.1.2 Beispiel für einen Client-Socket

import java.net.Socket;

try (Socket socket = new Socket("localhost", 8080)) {
    // Kommunikation mit dem Server
} catch (Exception e) {
    // Fehlerbehandlung
}

18.2 TCP/IP-Verbindungen in Java

Java ermöglicht die Erstellung von TCP/IP-Verbindungen durch die Klassen ServerSocket und Socket.

18.2.1 TCP Server-Beispiel

import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

try (ServerSocket serverSocket = new ServerSocket(8080)) {
    Socket clientSocket = serverSocket.accept();
    PrintWriter out = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
    out.println("Hallo Welt");
    out.flush();
} catch (Exception e) {
    // Fehlerbehandlung
}

18.3 RESTful Webservices

Java bietet mehrere Bibliotheken und Frameworks für die Erstellung von RESTful Webservices, wie z.B. JAX-RS.

18.3.1 Beispiel für einen einfachen REST-Endpoint mit JAX-RS

import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("/hello")
public class HelloResource {
    @GET
    public String sayHello() {
        return "Hello, World!";
    }
}

Netzwerkprogrammierung in Java deckt ein breites Spektrum an Möglichkeiten ab, von der niedrigstufigen Socket-Programmierung bis zu hochstufigen RESTful Webservices. Sockets und Ports sind die Grundbausteine für die Netzwerkkommunikation, während höhere Abstraktionsebenen wie RESTful Webservices die Entwicklung verteilter Anwendungen erleichtern.