Red de conocimiento de abogados - Derecho de sociedades - ¿El socket en Java recibe datos del puerto a través del cual se envía la solicitud del cliente?

¿El socket en Java recibe datos del puerto a través del cual se envía la solicitud del cliente?

1. Establecer una clase de servidor

Hay una clase en Java que se usa específicamente para crear un servidor Socket, llamada ServerSocket. Puede usar el número de puerto que el servidor necesita usar. un parámetro para crear un objeto de servidor.

ServerSocket server = new ServerSocket(9998)

Esta declaración crea un objeto de servidor. Este servidor usa el puerto 9998, es decir, registra el servicio en el puerto 9998. Hay algo a tener en cuenta. aquí Sí, la asignación del puerto debe ser única. Debido a que el puerto es para identificar de forma única el servicio único de cada computadora, y el número de puerto es de 0 a 65535, los primeros 1024 puertos han sido utilizados como puertos reservados por Tcp/Ip, por lo que los puertos que asigne solo pueden ser 1024 o posteriores. . de. Cuando un programa cliente establece una conexión Socket y el número de puerto conectado es 9998, el servidor de objetos del servidor responde a la conexión y el método server.accept () crea un objeto Socket. El servidor puede utilizar este objeto Socket para comunicarse con el cliente.

Socket incoming = server.accept(); // Ventana de escucha, esperando conexión

Luego obtenga el flujo de entrada y el flujo de salida y encapsúlelos

BufferedReader in = new BufferedReader(new

InputStreamReader(incoming.getInputStream()));

/*

Al leer un archivo, primero lea el contenido en caché, cuando se llama a in.readLine(), los datos se leen del caché en forma de caracteres (en lo sucesivo, "método de lectura de bytes de caché").

*/

PrintWriter ut = new PrintWriter(incoming.getOutputStream(),true);

Luego, puedes usar el método in.readLine() para obtener la entrada del cliente, también puede utilizar el método out.println() para enviar datos al cliente. Así, puede responder a diferentes solicitudes del cliente según las necesidades del programa.

Una vez completada toda la comunicación, estos dos flujos de datos deben cerrarse. El orden de cierre es cerrar primero el flujo de salida y luego cerrar el flujo de entrada, es decir, usar

. out.close();

in.close();

2. Establecer el código del cliente

En comparación con el lado del servidor, el lado del cliente es más simple. El cliente solo necesita usar la ubicación del servidor. Cree un objeto Socket con la IP de la máquina y el puerto del servidor como parámetros. Después de obtener este objeto, puede utilizar el método introducido en la sección "Construir servidor" para implementar la entrada y salida de datos.

Socket socket = new Socket("168.160.12.42",9998);

O:

Socket socket = nuevo Socket(InetAddress.getLocalHost(), 5678); // Solicite una conexión al servidor con el nombre de host InetAddress.getLocalHost()

El cliente debe conocer la dirección IP del servidor. Java también proporciona una clase InetAddress relacionada para este objeto. La instancia debe proporcionarse a través de su método estático, que proporciona principalmente métodos para obtener la IP local y obtener la InetAddress directamente por nombre o IP.

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

out = new PrintWriter(socket.getOutputStream(),true); >El código de programa anterior crea un objeto Socket, que está conectado al objeto servidor en el host con la dirección IP 168.160.12.42 y el puerto 9998. Y se establecen un flujo de entrada y un flujo de salida, correspondientes a la salida del servidor y la escritura del cliente respectivamente.