Rumah  >  Artikel  >  Java  >  Bagaimanakah pengaturcaraan rangkaian Java berkomunikasi antara pelayan dan pelanggan?

Bagaimanakah pengaturcaraan rangkaian Java berkomunikasi antara pelayan dan pelanggan?

PHPz
PHPzasal
2024-04-15 13:06:01991semak imbas

Dalam pengaturcaraan rangkaian Java, bahagian pelayan dan pelanggan berkomunikasi melalui model pelayan-pelanggan, ikuti langkah berikut: Buat bahagian pelayan: Gunakan ServerSocket untuk mendengar pada port dan tunggu klien menyambung. Kendalikan permintaan klien: terima sambungan dan baca data daripada klien, proses permintaan dan kembalikan respons, dan akhirnya tutup soket klien. Cipta pelanggan: wujudkan sambungan Soket, hantar permintaan ke pelayan, baca respons dan tutup soket.

Bagaimanakah pengaturcaraan rangkaian Java berkomunikasi antara pelayan dan pelanggan?

Pengaturcaraan Rangkaian Java: Sisi Pelayan dan Komunikasi Pelanggan

Dalam Pengaturcaraan Rangkaian Java, komunikasi antara bahagian pelayan dan pelanggan mengikut model pelayan-pelanggan. Artikel ini akan menyelidiki bagaimana bahagian pelayan dan bahagian klien mewujudkan sambungan dan bertukar data melalui soket.

Buat bahagian pelayan

Pihak pelayan bertanggungjawab untuk mendengar sambungan pelanggan dan memproses permintaan daripada pelanggan. Untuk membuat bahagian pelayan, langkah berikut boleh digunakan:

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

Buat Pelanggan

Pelanggan bertanggungjawab untuk menyambung ke bahagian pelayan dan menghantar permintaan. Langkah berikut digunakan untuk mencipta klien:

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

Satu kes praktikal

Berikut ialah kes praktikal yang menunjukkan cara menggunakan pengaturcaraan rangkaian Java untuk berkomunikasi antara bahagian pelayan dan pelanggan:

Kod sisi pelayan :

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

Kod pelanggan:

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

Selepas menjalankan kod ini, bahagian pelayan akan mendengar sambungan pada port 8080, dan pelanggan akan menyambung ke bahagian pelayan dan menghantar "Helo daripada mesej pelanggan!" Pelayan akan menerima mesej dan membalas dengan "Hello dari pelayan!".

Atas ialah kandungan terperinci Bagaimanakah pengaturcaraan rangkaian Java berkomunikasi antara pelayan dan pelanggan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn