Maison  >  Article  >  Java  >  Comment la programmation réseau Java communique-t-elle entre le serveur et le client ?

Comment la programmation réseau Java communique-t-elle entre le serveur et le client ?

PHPz
PHPzoriginal
2024-04-15 13:06:011059parcourir

En programmation réseau Java, le serveur et le client communiquent via le modèle client-serveur, suivez les étapes suivantes : Créez le serveur : utilisez ServerSocket pour écouter sur le port et attendez que le client se connecte. Gérer la demande du client : accepter la connexion et lire les données du client, traiter la demande et renvoyer la réponse, et enfin fermer le socket client. Créez un client : établissez une connexion Socket, envoyez une requête au serveur, lisez la réponse et fermez le socket.

Comment la programmation réseau Java communique-t-elle entre le serveur et le client ?

Programmation réseau Java : communication côté serveur et client

Dans la programmation réseau Java, la communication entre le côté serveur et le client suit le modèle client-serveur. Cet article expliquera comment le côté serveur et le côté client établissent une connexion et échangent des données via des sockets.

Créer le côté serveur

Le côté serveur est responsable de l'écoute des connexions client et du traitement des demandes des clients. Afin de créer un côté serveur, les étapes suivantes peuvent être utilisées :

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);
    }
}

Créer un client

Le client est responsable de la connexion au côté serveur et de l'envoi des requêtes. Les étapes suivantes permettent de créer un client :

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();
    }
}

Un cas pratique

Ce qui suit est un cas pratique qui montre comment utiliser la programmation réseau Java pour communiquer entre le côté serveur et le client :

Code côté serveur :

// 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();
    }
}

Code client :

// 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();
    }
}

Après avoir exécuté ce code, le côté serveur écoutera les connexions sur le port 8080 et le client se connectera au côté serveur et enverra un message "Bonjour du client !" Le serveur recevra le message et répondra par "Bonjour du serveur !".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn