Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo accede el socket al nombre de dominio?

¿Cómo accede el socket al nombre de dominio?

Las aplicaciones de red se dividen en dos partes: cliente y servidor. La clase Socket es una clase Java responsable de manejar la comunicación del cliente. A través de esta clase, puede conectarse al servidor utilizando la IP o el nombre de dominio especificado y enviar y recibir datos con el servidor. En este artículo y en artículos posteriores, se analizará en detalle el uso de la clase Socket, incluidos los conceptos básicos de la clase Socket, varios métodos de conexión, métodos get y set, tiempos de espera durante el proceso de conexión y cierre de conexiones de red.

En este artículo, discutiremos los pasos y métodos básicos para usar la clase Socket. Al conectarse a un programa de servicio, un programa cliente de red universal debe realizar los siguientes tres pasos.

1. Conéctese al servidor

2. Envíe y reciba datos

3. Cierre la conexión de red

Primero, conéctese a. el servidor

Hay dos formas para que el cliente se conecte al servidor, una es conectarse al servidor a través de IP y la otra es conectarse al servidor a través del nombre de dominio.

De hecho, estos dos métodos son esencialmente el mismo método. Básicamente, el cliente se conecta al servidor a través de IP, pero existen algunas diferencias entre las dos formas. Si el programa del servidor está conectado a través de IP, entonces el cliente simplemente se conecta según IP. Si el servidor está conectado a través de un nombre de dominio, el cliente debe resolver el nombre de dominio en una IP a través de DNS y luego conectarse según esta IP.

En muchos lenguajes de programación o herramientas de desarrollo (como C/C++, Delphi), cuando se utiliza el método de nombre de dominio para conectarse al servidor, el nombre de dominio debe resolverse primero en IP y luego conectados a través de IP. En Java, la clase Socket ya contiene la función de resolución de nombres de dominio, por lo que solo necesitamos usar nombres de dominio como IP.

La forma más común de conectarse a un programa de servidor a través de la clase Socket es pasar la IP o el nombre de dominio y el número de puerto como parámetros a la clase Socket a través del constructor de la clase Socket. El constructor de la clase Socket tiene muchas formas sobrecargadas. Esta sección solo analiza la forma más utilizada: socket público (host de cadena, puerto int). A juzgar por la definición de este constructor, solo necesita pasar la IP o el nombre de dominio y el número de puerto directamente al constructor. El siguiente código es un programa de muestra para conectarse al programa del servidor:

Paquete mysocket

Importar Java net.*;

Clase pública MyConnection

{

Public static void main(String[] args)

{

Probar

{

if (args . length & gt; 0)

{

Socket socket = new Socket(args[0], 80);

Sistema .out.println (args[0]+"¡Conexión exitosa!");

}

Otros

System.out.println("Especifique la IP o nombre de dominio!" );

}

Captura (Excepción e)

{

System.err.println("Error mensaje: "+e .getmessage());

}

}

}

La IP o el nombre de dominio se pasa a el programa a través de los parámetros de la línea de comando anteriores Luego conéctese al puerto 80 de la IP o nombre de dominio especificado a través de los parámetros de la línea de comando a través del socket socket = new socket (args [0], 80). Dado que el constructor de la clase Socket usa throws cuando está definido, al llamar al constructor de la clase Socket, debe usar la declaración try...catch para detectar errores, o usar la declaración throws para generar un error para la función principal. .

Prueba la IP correcta

java mysocket.

Mi conexión 127.0.0.1

Resultado de salida: ¡127.0.0.1 se ha conectado correctamente!

Prueba IP incorrecta

java mysocket. Mi conexión 10.10.10.10

Salida: Mensaje de error: Se agotó el tiempo de conexión: Conectar.

Nota: 10.10.10 es una IP que no existe. Si esta IP existe en tu red, utiliza otra que no exista.

Pruebe el nombre de dominio correcto

java mysocket. Mi conexión a www.ptpress.com.cn

Resultado de salida: ¡www.ptpress.com.cn se ha conectado correctamente!

Probando el nombre de dominio incorrecto

java mysocket. mi conexión www .pt press 1 . com cn

Resultado de salida: Mensaje de error: www.ptpress1.com.cn

El uso de la clase Socket para conectarse al servidor puede determinar cuál Los puertos del host están abiertos. El siguiente código es un programa que escanea qué puertos están abiertos en esta máquina.