2012-06-02 10 views
10

Si un cliente escucha en un socket al http://socketplaceonnet.com por ejemplo, ¿cómo sabe que hay contenido nuevo? Supongo que el servidor no puede enviar datos directamente al cliente, ya que el cliente podría estar detrás de un enrutador, sin reenvío de puertos, por lo que no es posible una conexión directa. El cliet podría ser un teléfono móvil que cambie su dirección IP, así que entiendo que para que el cliente sea un oyente, el servidor no necesita saber la IP del clint.cómo funciona la escucha de un socket

Gracias

+1

Breve [introducción] (http://ssfnet.org/Exchange/tcp/tcpTutorialNotes.html) (relacionado con el protocolo TCP). – Vidul

+2

El hecho de que la conexión sea directa o no cambia nada. Los bytes (en paquetes) llegan a su computadora (puede ser un buffer en su tarjeta de red) y como resultado se envía una señal a su software. –

Respuesta

46

Un socket de cliente no escucha para las conexiones entrantes, inicia una conexión saliente al servidor. El socket del servidor escucha las conexiones entrantes.

Un servidor crea un socket, vincula el socket a una dirección IP y número de puerto (para TCP y UDP), y luego escucha las conexiones entrantes. Cuando un cliente se conecta al servidor, se crea un nuevo socket para comunicarse con el cliente (solo TCP). Se utiliza un mecanismo de sondeo para determinar si se ha producido alguna actividad en cualquiera de los sockets abiertos.

Un cliente crea un socket y se conecta a una dirección IP remota y un número de puerto (para TCP y UDP). Se puede usar un mecanismo de sondeo (select(), poll(), epoll(), etc.) para monitorear el socket en busca de información del servidor sin bloquear el hilo.

En el caso de que el cliente esté detrás de un enrutador que proporciona NAT (traducción de direcciones de red), el enrutador vuelve a escribir la dirección del cliente para que coincida con la dirección IP pública del enrutador. Cuando el servidor responde, el enrutador cambia su dirección IP pública a la dirección IP del cliente. El enrutador mantiene una tabla de las conexiones activas que está traduciendo para que pueda asignar las respuestas del servidor al cliente correcto.

+1

+1 excelente y bien explicado en menos de 14 líneas :) –

+0

+1 Realmente es una explicación muy agradable y breve y dulce del mecanismo de votación del servidor durante la comunicación. Gracias. –

Cuestiones relacionadas