>Java >java지도 시간 >Java 네트워크 프로그래밍은 서버와 클라이언트 간에 어떻게 통신합니까?

Java 네트워크 프로그래밍은 서버와 클라이언트 간에 어떻게 통신합니까?

PHPz
PHPz원래의
2024-04-15 13:06:011101검색

Java 네트워크 프로그래밍에서 서버와 클라이언트는 클라이언트-서버 모델을 통해 통신하며 다음 단계를 따릅니다. 서버 만들기: ServerSocket을 사용하여 포트에서 수신 대기하고 클라이언트가 연결될 때까지 기다립니다. 클라이언트 요청 처리: 연결을 수락하고 클라이언트에서 데이터를 읽고, 요청을 처리하고 응답을 반환하고, 마지막으로 클라이언트 소켓을 닫습니다. 클라이언트 생성: 소켓 연결을 설정하고, 서버에 요청을 보내고, 응답을 읽고, 소켓을 닫습니다.

Java 네트워크 프로그래밍은 서버와 클라이언트 간에 어떻게 통신합니까?

Java 네트워크 프로그래밍: 서버 측 및 클라이언트 통신

Java 네트워크 프로그래밍에서 서버 측과 클라이언트 간의 통신은 클라이언트-서버 모델을 따릅니다. 이 기사에서는 서버 측과 클라이언트 측이 소켓을 통해 연결을 설정하고 데이터를 교환하는 방법을 살펴보겠습니다.

서버 측 만들기

서버 측은 클라이언트 연결을 수신하고 클라이언트의 요청을 처리하는 역할을 담당합니다. 서버 측을 생성하려면 다음 단계를 사용할 수 있습니다.

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

클라이언트 생성

클라이언트는 서버 측에 연결하고 요청을 보내는 일을 담당합니다. 클라이언트를 생성하려면 다음 단계를 사용합니다.

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

실용 사례

다음은 Java 네트워크 프로그래밍을 사용하여 서버 측과 클라이언트 간 통신을 수행하는 방법을 보여주는 실제 사례입니다.

서버 측 코드 :

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

클라이언트 코드:

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

이 코드를 실행하면 서버 측은 포트 8080에서 연결을 수신하고 클라이언트는 서버 측에 연결하여 "Hello from client!" 메시지를 보냅니다. 서버는 메시지를 수신하고 "Hello from server!"로 응답합니다.

위 내용은 Java 네트워크 프로그래밍은 서버와 클라이언트 간에 어떻게 통신합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.