2012-05-17 11 views
6

He estado aprendiendo sobre el socket UDP últimamente navegando por la red y todas las páginas que lo explicaban mencionaron que los sockets UDP son " conexión menos ". Esto, si lo entiendo correctamente significa que uno no tiene una "conexión" entre dos tomas, sino que dispara paquetes de datagramas a puntos finales específicos sin saber si el otro extremo está escuchando.conectar en "conexión menos" boost :: asio :: ip :: udp :: socket

entonces voy y comenzar a leer el impulso :: :: asio ip :: :: UDP socket docs y encontrar que menciona API como:

  • async_connect: Inicio de una asíncrona conectar.
  • async_receive: inicia una recepción asincrónica en un socket conectado.
  • async_send: inicia un envío asincrónico en un socket conectado.

Ahora esto es un poco confuso para un novato. No puedo encontrar 3 causas posibles para mi confusión (en orden de likehood :))

  1. me falta algo
  2. La aplicación ASIO está haciendo algo detrás de las escenas de virtualizar la conexión.
  3. La documentación está mal

También hay un pequeño problema en la documentación, cuando se abre la página para basic_datagram_socket::async_connect el ejemplo allí se instanciar TCP enchufes (en vez de UDP unos).

¿Alguien podría aclararme?

Respuesta

11

especificación The Single UNIX tiene una mejor explicación de lo que connect hace para una conexión menos tomas:

Si la toma de iniciación no es en modo conexión, a continuación, conectar() establece la dirección de pares de la toma, pero sin la conexión está hecha. Para sockets SOCK_DGRAM, la dirección par identifica dónde se envían todos los datagramas en las llamadas send() posteriores y limita el remitente remoto para las llamadas posteriores recv().

+0

+1 y si no fue obvio, esta es la confusión # 1 en la pregunta original. –

Cuestiones relacionadas