Heim > Java > javaLernprogramm > Hauptteil

Wie kommuniziert die Java-Netzwerkprogrammierung zwischen Server und Client?

PHPz
Freigeben: 2024-04-15 13:06:01
Original
1050 Leute haben es durchsucht

Bei der Java-Netzwerkprogrammierung kommunizieren Server und Client über das Client-Server-Modell. Führen Sie die folgenden Schritte aus: Erstellen Sie den Server: Verwenden Sie ServerSocket, um den Port abzuhören und darauf zu warten, dass der Client eine Verbindung herstellt. Behandeln Sie die Client-Anfrage: Akzeptieren Sie die Verbindung und lesen Sie Daten vom Client, verarbeiten Sie die Anfrage und geben Sie die Antwort zurück und schließen Sie schließlich den Client-Socket. Erstellen Sie einen Client: Stellen Sie eine Socket-Verbindung her, senden Sie eine Anfrage an den Server, lesen Sie die Antwort und schließen Sie den Socket.

Wie kommuniziert die Java-Netzwerkprogrammierung zwischen Server und Client?

Java-Netzwerkprogrammierung: Serverseitige und Client-Kommunikation

Bei der Java-Netzwerkprogrammierung folgt die Kommunikation zwischen Serverseite und Client dem Client-Server-Modell. In diesem Artikel wird erläutert, wie die Serverseite und die Clientseite über Sockets eine Verbindung herstellen und Daten austauschen.

Erstellen Sie die Serverseite

Die Serverseite ist dafür verantwortlich, Clientverbindungen abzuhören und Anfragen von Clients zu verarbeiten. Um eine Serverseite zu erstellen, können die folgenden Schritte verwendet werden:

import java.net.*;
import java.io.*;

public class Server {

    public static void main(String[] args) throws IOException {
        // 创建一个服务器套接字,监听端口 8080
        ServerSocket serverSocket = new ServerSocket(8080);

        // 循环等待客户端连接
        while (true) {
            // 接受客户端连接并返回一个套接字
            Socket clientSocket = serverSocket.accept();

            // 处理客户端请求
            handleClientRequest(clientSocket);

            // 关闭客户端套接字
            clientSocket.close();
        }

        // 关闭服务器套接字
        serverSocket.close();
    }

    public static void handleClientRequest(Socket clientSocket) throws IOException {
        // 从输入流读取客户端数据
        InputStream inputStream = clientSocket.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        String request = reader.readLine();

        // 处理请求并返回响应
        String response = processRequest(request);

        // 向输出流写入响应
        OutputStream outputStream = clientSocket.getOutputStream();
        PrintWriter writer = new PrintWriter(outputStream);
        writer.println(response);
    }
}
Nach dem Login kopieren

Client erstellen

Der Client ist für die Verbindung zur Serverseite und das Senden von Anfragen verantwortlich. Die folgenden Schritte werden zum Erstellen eines Clients verwendet:

import java.net.*;
import java.io.*;

public class Client {

    public static void main(String[] args) throws IOException {
        // 创建一个客户端套接字并连接到服务器端(主机名:localhost,端口:8080)
        Socket clientSocket = new Socket("localhost", 8080);

        // 向服务器端发送请求
        OutputStream outputStream = clientSocket.getOutputStream();
        PrintWriter writer = new PrintWriter(outputStream);
        writer.println("Hello from client!");

        // 从服务器端读取响应
        InputStream inputStream = clientSocket.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        String response = reader.readLine();
        System.out.println("Response from server: " + response);

        // 关闭客户端套接字
        clientSocket.close();
    }
}
Nach dem Login kopieren

Ein praktischer Fall

Das Folgende ist ein praktischer Fall, der zeigt, wie Java-Netzwerkprogrammierung für die Kommunikation zwischen der Serverseite und dem Client verwendet wird:

Serverseitiger Code :

// Server.java
import java.net.*;
import java.io.*;

public class Server {

    public static void main(String[] args) throws IOException {
        // 监听端口 8080
        ServerSocket serverSocket = new ServerSocket(8080);

        // 等待客户端连接
        Socket clientSocket = serverSocket.accept();

        // 读取客户端数据
        BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        String request = reader.readLine();
        System.out.println("Received request: " + request);

        // 响应客户端请求
        PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());
        writer.println("Hello from server!");
        writer.flush();

        // 关闭套接字
        clientSocket.close();
        serverSocket.close();
    }
}
Nach dem Login kopieren

Client-Code:

// Client.java
import java.net.*;
import java.io.*;

public class Client {

    public static void main(String[] args) throws IOException {
        // 连接到服务器端(主机名:localhost,端口:8080)
        Socket clientSocket = new Socket("localhost", 8080);

        // 向服务器端发送数据
        PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());
        writer.println("Hello from client!");
        writer.flush();

        // 读取服务器端响应
        BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        String response = reader.readLine();
        System.out.println("Received response: " + response);

        // 关闭套接字
        clientSocket.close();
    }
}
Nach dem Login kopieren

Nach der Ausführung dieses Codes wartet die Serverseite auf Verbindungen auf Port 8080 und der Client stellt eine Verbindung zur Serverseite her und sendet eine „Hallo vom Client!“-Nachricht. Der Server empfängt die Nachricht und antwortet mit „Hallo vom Server!“.

Das obige ist der detaillierte Inhalt vonWie kommuniziert die Java-Netzwerkprogrammierung zwischen Server und Client?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage