Java Socket Programming – Leitfaden

Willkommen zum Beispiel der Java Socket Programming. Jeder Server ist ein Programm, das auf einem bestimmten System läuft und auf einem bestimmten Port hört. Sockets sind an die Portnummern gebunden und wenn wir irgendeinen Server laufen lassen, hört er einfach auf dem Socket und wartet auf Clientanfragen. Zum Beispiel wartet der Tomcat Server, der auf Port 8080 läuft, auf Clientanfragen und sobald er eine Clientanfrage erhält, reagiert er darauf.

Java Socket Programming

Ein Socket ist ein Endpunkt einer Zwei-Wege-Kommunikationsverbindung zwischen zwei Programmen, die im Netzwerk laufen. Der Socket ist an eine Portnummer gebunden, damit die TCP-Schicht die Anwendung identifizieren kann, zu der die Daten gesendet werden sollen. Im Tutorial-Beispiel zur Java Socket Programming werden wir lernen, wie man ein Java Socket Server- und ein Java Socket Client-Programm schreibt. Wir werden auch lernen, wie Server-Client-Programme Daten auf dem Socket lesen und schreiben. java.net.Socket und java.net.ServerSocket sind die Java-Klassen, die Socket und Socket-Server implementieren.

Java Socket Server Beispiel

package com.journaldev.socket;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.ClassNotFoundException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * This class implements java Socket server
 * @author pankaj
 *
 */
public class SocketServerExample {
    
    //static ServerSocket variable
    private static ServerSocket server;
    //socket server port on which it will listen
    private static int port = 9876;
    
    public static void main(String args[]) throws IOException, ClassNotFoundException{
        //create the socket server object
        server = new ServerSocket(port);
        //keep listens indefinitely until receives 'exit' call or program terminates
        while(true){
            System.out.println("Waiting for the client request");
            //creating socket and waiting for client connection
            Socket socket = server.accept();
            //read from socket to ObjectInputStream object
            ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
            //convert ObjectInputStream object to String
            String message = (String) ois.readObject();
            System.out.println("Message Received: " + message);
            //create ObjectOutputStream object
            ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
            //write object to Socket
            oos.writeObject("Hi Client "+message);
            //close resources
            ois.close();
            oos.close();
            socket.close();
            //terminate the server if client sends exit request
            if(message.equalsIgnoreCase("exit")) break;
        }
        System.out.println("Shutting down Socket server!!");
        //close the ServerSocket object
        server.close();
    }
    
}

Java Socket Client

package com.journaldev.socket;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 * This class implements java socket client
 * @author pankaj
 *
 */
public class SocketClientExample {

    public static void main(String[] args) throws UnknownHostException, IOException, ClassNotFoundException, InterruptedException{
        //get the localhost IP address, if server is running on some other IP, you need to use that
        InetAddress host = InetAddress.getLocalHost();
        Socket socket = null;
        ObjectOutputStream oos = null;
        ObjectInputStream ois = null;
        for(int i=0; i<5;i++){
            //establish socket connection to server
            socket = new Socket(host.getHostName(), 9876);
            //write to socket using ObjectOutputStream
            oos = new ObjectOutputStream(socket.getOutputStream());
            System.out.println("Sending request to Socket Server");
            if(i==4)oos.writeObject("exit");
            else oos.writeObject(""+i);
            //read the server response message
            ois = new ObjectInputStream(socket.getInputStream());
            String message = (String) ois.readObject();
            System.out.println("Message: " + message);
            //close resources
            ois.close();
            oos.close();
            Thread.sleep(100);
        }
    }
}

Um die Server-Client-Kommunikation der Java Socket Programming zu testen, müssen wir zunächst die Klasse SocketServerExample ausführen. Wenn du den Socket Server laufen lässt, wird er einfach „Warte auf Clientanfrage“ ausgeben und dann auf die Clientanfrage warten. Jetzt, wenn du die Klasse SocketClientExample ausführst, wird sie eine Anfrage an den Java Socket Server senden und die Antwortnachricht auf die Konsole ausgeben. Hier ist der Output des Java Socket Server Programms SocketServerExample.

Waiting for the client request
Message Received: 0
Waiting for the client request
Message Received: 1
Waiting for the client request
Message Received: 2
Waiting for the client request
Message Received: 3
Waiting for the client request
Message Received: exit
Shutting down Socket server!!

Hier ist der Output des Java Socket Client Programms SocketClientExample.

Sending request to Socket Server
Message: Hi Client 0
Sending request to Socket Server
Message: Hi Client 1
Sending request to Socket Server
Message: Hi Client 2
Sending request to Socket Server
Message: Hi Client 3
Sending request to Socket Server
Message: Hi Client exit

Das ist alles für einen schnellen Überblick über die Socket Programmierung in Java. Ich hoffe, du kannst jetzt mit der Programmierung von Java Socket Server und Java Socket Client beginnen.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren:

centron Managed Cloud Hosting in Deutschland

Java-Array: So prüfst du Werte effizient

JavaScript
Wie prüft man, ob ein Java Array einen Wert enthält? Es gibt viele Möglichkeiten, um zu überprüfen, ob ein Java Array einen bestimmten Wert enthält. Einfache Iteration mit einer for-Schleife…