Como escrever a versão udp mais simples do servidor echo e do cliente echo (até os iniciantes entendem!)

Índice

Propósito

Primeiro passo

Servidor de gravação(servidor)

Passo 2

Crie vários parâmetros para o servidor

terceiro passo

Implementar conteúdo específico do servidor

 o quarto passo

Escrever Cliente(cliente)

Implementar conteúdo específico do cliente

Processo geral

código total

Baixar código-fonte


Propósito

Escrevemos uma versão udp do echo server e do echo client

Após enviar qualquer mensagem através do cliente em seu próprio computador, o servidor receberá e enviará a mensagem

Retorne o conteúdo inalterado sem fazer nenhum processamento.

Primeiro passo

Crie dois arquivos java, os comandos são Servidor e Cliente

Servidor de gravação(servidor)

Devemos primeiro entender que na rede o servidor deve ser iniciado primeiro. Somente quando o servidor for iniciado primeiro nosso cliente poderá enviar instruções ao servidor.

Então, vamos primeiro entrar no arquivo Server.java e começar a escrever nosso código

Passo 2

Crie vários parâmetros para o servidor

Primeiro para operar a rede, precisamos de um pacote chamado DatagramSocket fornecido pelo Java.

Então ao criar um objeto e instanciar o objeto, precisamos configurar manualmente uma porta para ele

terceiro passo

Implementar conteúdo específico do servidor

 A seguir está o significado específico de cada código

 o quarto passo

Escrever Cliente(cliente)

Implementar conteúdo específico do cliente

Primeiro ainda criamos um Socket para manipular dados

Aqui está uma olhada na diferença entre os dois

A seguir está o significado específico de cada código

Processo geral

Vamos repassar o processo geral novamente

1. O servidor cria um pacote DatagramPacket e aguarda a entrega da mensagem do cliente (bloqueando se não houver mensagem)

2. O cliente anexa seu próprio endereço IP através do número da porta correspondente, empacota a mensagem e a envia ao servidor para que ele processe a mensagem.

3. O servidor aceita o pacote de mensagens, processa a mensagem, reembala a mensagem processada e a retorna ao cliente com o endereço IP.

4. O cliente cria um novo pacote e recebe os dados processados.

código total

Servidor

import java.net.DatagramSocket;
import java.net.SocketException;

public class MyServer {
    private DatagramSocket socket = null;
    MyServer(int port) throws SocketException {
        this.socket = new DatagramSocket(port);
    }
    public void start() throws IOException {
        System.out.println("服务器启动!");
        while(true){
            DatagramPacket requestPacket = new DatagramPacket(new byte[4096],4096);
            socket.receive(requestPacket);
            String request = new String(requestPacket.getData(),0, requestPacket.getLength());
            String response = process(request);
            DatagramPacket responsePacket = new DatagramPacket(response.getBytes(),0,response.length(),
                    requestPacket.getSocketAddress());
            socket.send(responsePacket);
            System.out.printf("[%s:%d] req: %s, resp: %s\n", requestPacket.getAddress().toString(),
                    requestPacket.getPort(), request, response);
        }
    }
    public String process(String request){
        return request;
    }
    public static void main(String[] args) throws IOException {
        MyServer myServer = new MyServer(9090);
        myServer.start();
    }
}

Cliente

import java.io.IOException;
import java.net.*;
import java.util.Scanner;

public class MyClient {
    DatagramSocket socket = null;
    int server_port;
    String server_ip;
    MyClient(String server_ip,int server_port) throws SocketException {
        this.socket = new DatagramSocket();
        this.server_ip = server_ip;
        this.server_port = server_port;
    }
    public void start() throws IOException {
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("->");
            String request = sc.next();
            DatagramPacket requestPacket = new DatagramPacket(request.getBytes(),0,request.length(),
                    InetAddress.getByName(server_ip),server_port);
            socket.send(requestPacket);
            DatagramPacket responsePacket = new DatagramPacket(new byte[4096],4096);
            socket.receive(responsePacket);
            String response = new String(responsePacket.getData(),0,responsePacket.getLength());
            System.out.printf("req: %s, resp: %s\n", request, response);

        }
    }
    public static void main(String[] args) throws IOException {
        MyClient myClient = new MyClient("127.0.0.1",9090);
        myClient.start();
    }
}

Baixar código-fonte

https://download.csdn.net/download/qq_62718027/87945837

Acho que você gosta

Origin blog.csdn.net/qq_62718027/article/details/131368419
Recomendado
Clasificación