Pregunta Resolver el nombre de host a una dirección IP


Desarrollé una aplicación de simulación cliente / servidor. Implementé el cliente y el servidor en dos máquinas diferentes de Windows XP. De alguna manera, el cliente no puede enviar solicitudes al servidor.

Intenté debajo de opciones:

  1. Pinchó la máquina del servidor con éxito desde el cliente utilizando la dirección IP.

  2. Pinchó la máquina del cliente con éxito desde el servidor usando la dirección IP.

  3. Herramienta de línea de comandos de netstat comprobada de ambas máquinas. El servidor está en LISTENING modo y cliente está en SYS_SENT modo. Pero la dirección externa que está utilizando para enviar es el nombre de host y no la dirección de IP.

  4. Pinged servidor máquina sin éxito utilizando el nombre de host del cliente.

  5. Pinchó la máquina del cliente con éxito utilizando el nombre de host del servidor.

Siento que el problema es cuando el cliente intenta conectarse al servidor usando el nombre de host.

¿Podría decirme cómo forzar a una aplicación a usar una dirección IP en lugar de un nombre de host? ¿Hay alguna otra forma de asignar el nombre de host a una dirección IP?


32
2017-07-06 08:25


origen


Respuestas:


Ve a tu máquina cliente y escribe:

nslookup server.company.com

sustituyendo el nombre de host real de su servidor por server.company.com, por supuesto.

Eso debería indicarle qué servidor DNS está usando su cliente (si lo hay) y cuál cree que es el problema con el nombre.

A fuerza una aplicación para usar una dirección IP, generalmente solo la configura para usar la dirección IP en lugar de un nombre de host. Si el nombre de host está codificado, o la aplicación insiste en usar un nombre de host con preferencia a una dirección de IP (como parece indicar uno de sus otros comentarios), entonces probablemente no tenga suerte allí.

Sin embargo, puede cambiar la forma en que la mayoría de las máquinas resuelven los nombres de host, como con /etc/resolv.conf y /etc/hosts en sistemas UNIXy y un archivo de hosts locales en sistemas Windows-y.


41
2017-07-06 08:36



Puede usar una función C getaddrinfo () para obtener la dirección numérica, tanto ipv4 como ipv6. Ver el código de ejemplo aquí


1
2017-10-04 05:47



Pruebe tracert para resolver el nombre de host. IE tienes la dirección IP 8.8.8.8 para que la uses; tracert 8.8.8.8


1
2018-03-18 04:38



Esto es difícil de responder sin más detalles sobre la arquitectura de red. Algunas cosas para investigar son:

  • ¿Es posible que el cliente y / o servidor esté detrás de un dispositivo NAT, un firewall o similar?
  • ¿Alguna de las direcciones IP involucradas es una dirección "local", como 192.168.x.y o 10.x.y.z?
  • ¿Cuáles son los nombres de host, son DNS "reales": nombres disponibles o algo más local y / o específico de Windows?
  • ¿Cómo busca el cliente el servidor? Debe haber un lugar en los datos de código o configuración que contenga el nombre de host, simplemente intente usar la IP en su lugar si desea evitar la búsqueda.

0
2017-07-06 08:30



Windows XP tiene el Firewall de Windows que puede interferir con el tráfico de la red si no está configurado correctamente. Puede desactivar el Firewall de Windows, si tiene privilegios de administrador, acceda al applet de Windows Firewall a través del Panel de control. Si su aplicación funciona con el Firewall de Windows apagado, entonces el problema probablemente se deba a la configuración del firewall.

Tenemos una aplicación que se ejecuta en varias PC que se comunican usando UDP / IP y hemos estado haciendo experimentos para que la aplicación se pueda ejecutar en una PC con un usuario que no tenga privilegios de administrador. Para que nuestra aplicación se comunique entre varias PC, hemos tenido que usar una cuenta de administrador para modificar la configuración de Firewall de Windows.

En nuestra aplicación, una PC se designa como el servidor y las otras son clientes en un grupo de servidor / cliente y puede haber varios grupos en la misma subred.

El primer cambio fue utilizar la funcionalidad de la pestaña Excepciones del applet de Firewall de Windows para crear una excepción para el puerto que usamos para la comunicación.

Estamos utilizando la búsqueda de nombres de host para que los clientes puedan ubicar su servidor asignado utilizando el nombre de la computadora compuesto por un prefijo mnemónico con un guión seguido de un número de terminal asignado (por ejemplo SERVER100-1). Esto permite que varios servidores con sus clientes asignados coexistan en la misma subred. El cliente usa su prefijo para generar el nombre de la computadora para el servidor asignado y luego usar la búsqueda de nombre de host para descubrir la dirección IP del servidor asignado.

Lo que descubrimos es que la búsqueda del nombre de host utilizando el nombre de la computadora (asignado a través de la pestaña Nombre del equipo del cuadro de diálogo Propiedades del sistema) no funcionaría a menos que el Firewall de Windows de la PC del servidor haya habilitado el puerto del Servicio de intercambio de archivos e impresoras.

Así que tuvimos que hacer dos cambios: (1) configurar una excepción para el puerto que utilizamos para la comunicación y (2) activar el Servicio de archivos e impresoras en la pestaña Excepciones para permitir la búsqueda del nombre de host.

** EDIT **

También puede encontrar esto Artículo de Microsoft Knowledge Base sobre la conexión de red de Windows XP.

Y mira esto artículo sobre la resolución de nombres de NETBIOS en Windows.


0
2017-12-03 01:17