Hier ein kleines Server-Client Beispiel, wie man in Java eine ServerSocket-Applikation erstellt.

Server-Code

public class Server
{
    public Server()
    {
        try
        {
            //Listener erstellen der auf Port 4444 horcht
            ServerSocket serverSocket = new ServerSocket( 4444 );
            System.out.println( "Awaiting client ..." );
            //Hier wartet der Server bis sich ein Client auf diesem Port meldet
            Socket clientSocket = serverSocket.accept();
            System.out.println( "Client found!" );
            //InputStream erstellen um Nachrihten vom Client zu empfangen
            BufferedReader in = 
            new BufferedReader( new InputStreamReader( 
            clientSocket.getInputStream() ) );

            String inputLine;
            //Jedes Mal wenn der Client etwas sendet wird hier der Inhalt angezeigt
            while ( (inputLine = in.readLine()) != null )
            {
                System.out.println( "Client says: " + inputLine );
            }
            //Der Client hat sich abgemeldet. Stream schliessen
            in.close();
            //ServerSocket schliessen
            serverSocket.close();
        }
        catch ( IOException ex )
        {
            System.out.println( ex );
        }
    }
}

Client Code

public class Client
{
    public Client()
    {
        try
        {
            //Einen Socket erstellen, der sich an Host 'localhost' und 
            //Port 4444 andockt
            Socket socket = new Socket("localhost", 4444);
            //Als Sende- bzw. Outputstream verwenden wir einen PrintWriter
            PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
            //Der User kann in die Konsole Messages eingeben, die dann an den 
            //Server gesendet werden
            Scanner scanner = new Scanner(System.in);

            String line;
            //Die Strings werden an den Server gesendet bis der Benutzer 'exit'
            //eingibt
            while (!(line = scanner.nextLine()).equals( "exit"))
            {
                pw.println( line);
            }
            //Stream schliessen
            pw.close();
            //Scanner schliessen
            scanner.close();
            //Socket schliessen
            socket.close();
            //Nachdem der Socket geschlossen wird ist die Verbindung wieder
            //frei. Der Server beendet seine while-Schleife und beendet sich danach
        }
        catch ( IOException ex )
        {
            System.out.println( ex );
        }
    }
}