La conexión entre el cliente y el servidor: la primera lección de la programación de redes java

Programa C / S de protocolo TCP

Necesita usar dos clases para escribir el programa CS del protocolo TCP: 1. ServerSocket para construir el
servidor
2. Socket para construir el cliente
Dos partes usan sockets (sockets, puntos finales de comunicación) para comunicarse

ServerSocket

Se utiliza para crear un servidor, después de la creación, se vinculará un número de puerto.
Luego, el servidor puede esperar a que el cliente se conecte, y cada vez que se conecta un cliente, el servidor obtendrá un nuevo objeto Socket, que se utiliza para comunicarse con el cliente.

Métodos de construcción habituales:

ServerSocket(int port);Cree un servidor basado en el protocolo TCP / IP y vincule el número de puerto especificado.
Nota: El rango del puerto del parámetro es: 0-65535 (se recomienda 1025-65535)

Métodos comunes:

Socket accept();Espere a que el cliente se conecte. Este método hará que el hilo se bloquee hasta que un nuevo cliente se conecte correctamente. Después de que se devuelva el objeto Socket, el hilo continúa ejecutándose.
void close();Suelte el número de puerto ocupado y apague el servidor.

Enchufe

Es el punto final de la comunicación entre dos computadoras, es un conjunto de estándares y un mecanismo para que el controlador de red proporcione una interfaz para la programación de aplicaciones.

Método de construcción:

Socket (String ip, int port)
crea un socket y se conecta al servidor con la ip y el número de puerto especificados.
Parámetro 1. La dirección IP del servidor.
Parámetro 2. El número de puerto del software del servidor ...

Métodos comunes:

- OutputStream getOutputStream();Lo que se devuelve es que el flujo de salida
- InputStream getInputStream();que apunta al otro extremo de la comunicación devuelve que el flujo de entrada que apunta al otro extremo de la comunicación
- void close();cierra el zócalo.
Nota:
En la programación de red, la operación de obtener flujos de entrada y salida es para el cliente y el servidor.
El flujo de entrada del cliente es relativo y la entrada es el contenido del flujo de salida del servidor. El flujo de salida del
cliente se envía al flujo de entrada del servidor.
Por lo tanto, cuando se usa , debe prestar atención a las siguientes reglas: el cliente y el servidor obtienen el flujo El orden debe invertirse:
por ejemplo: el cliente obtiene el flujo de entrada primero, luego el servidor debe obtener el flujo de salida primero

package com.test;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //搭建服务器
        ServerSocket server = new ServerSocket(55565);
        System.out.println("服务器建立完毕,等待连接!");
        //等待客户端连接
        Socket socket =  server.accept();
        OutputStream os = socket.getOutputStream();
        PrintStream ps = new PrintStream(os);
        ps.println("欢迎连接服务器!");

        InputStream is = socket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String text = br.readLine();
        System.out.println("收到了客户端的消息:"+text);


        System.out.println("服务器连接完毕!");

    }
}
服务器建立完毕,等待连接!
收到了客户端的消息:你好,服务器
服务器连接完毕!
package com.test;

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

public class ClientDemo {
    
    
    public static void main(String[] args) throws IOException {
    
    
        Socket socket = new Socket("127.0.0.1",55565);
        InputStream is = socket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String text = br.readLine();
        System.out.println("收到消息:"+text);

        OutputStream os = socket.getOutputStream();
        PrintStream ps = new PrintStream(os);
        ps.println("你好,服务器");
    }
}
收到消息:欢迎连接服务器!

Supongo que te gusta

Origin blog.csdn.net/qq_38960155/article/details/108889306
Recomendado
Clasificación