0% encontró este documento útil (0 votos)
10 vistas8 páginas

Introduccion Sockets Udp

El documento presenta una introducción a los Sockets UDP en C, explicando los modelos de capas TCP/IP y UDP/IP. Se detallan las características de TCP y UDP, incluyendo su funcionamiento y diferencias, así como ejemplos de programación para la creación de un servidor y un cliente utilizando sockets UDP. Se enfatiza que UDP es un protocolo sin conexión que permite la transmisión de datagramas sin garantía de entrega, mientras que TCP asegura la entrega y el orden de los paquetes.

Cargado por

reaperdragon007
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas8 páginas

Introduccion Sockets Udp

El documento presenta una introducción a los Sockets UDP en C, explicando los modelos de capas TCP/IP y UDP/IP. Se detallan las características de TCP y UDP, incluyendo su funcionamiento y diferencias, así como ejemplos de programación para la creación de un servidor y un cliente utilizando sockets UDP. Se enfatiza que UDP es un protocolo sin conexión que permite la transmisión de datagramas sin garantía de entrega, mientras que TCP asegura la entrega y el orden de los paquetes.

Cargado por

reaperdragon007
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Introducción a Sockets UDP en C

Facultad de Ingeniería
Universidad de Buenos Aires
Modelos de Capas
TCP/IP o UDP/IP

● Capa de Red o Internet (IP)


○ Permite enviar y recibir datos entre máquinas
■ No identifica la aplicación que envía/recibe
● Capa de Transporte
○ Nro de Puerto identifica el destino (aplicación) de la
máquina
○ Protocolos:
■ TCP – Transmission Control Protocol
■ UDP – User Datagram Protocol
TCP – Transmission Control Protocol

● Orientado a la conexión
● Los paquetes se reciben TODOS y en ORDEN
○ Se envía un "acknowledge" para cada paquete recibido
○ Se valida cada paquete mediante un Checksum
● Los datos pueden ser transmitidos simultáneamente en
ambas direcciones
● “ai.socktype=SOCK_STREAM”
UDP - User Datagram Protocol

● Sin conexión (Datagramas). Si Multicast/Broadcast


● Los datagramas pueden perderse o llegar duplicados o fuera
de secuencia; pero si llegan llegan completos.
○ Se utiliza un Checksum pero sólo para descartar paquetes
(no hay retransmisión)

● Los datos pueden ser transmitidos simultáneamente en


ambas direcciones
● “ai.socktype=SOCK_DGRAM”
Programming: sockets (Berkeley)

TCP UDP

socket socket

bind bind

listen

accept

connect

send/recv sendto/recvfrom

shutdown/close close
Programming: Ejemplo Servidor
/* Creamos el socket */
int Descriptor;
Descriptor = socket (AF_INET, SOCK_DGRAM, 0);

/* Nos linkeamos a un puerto */


struct sockaddr_in Direccion;
Direccion.sin_family = AF_INET;
Direccion.sin_port = ... ; /* puerto elegido */
Direccion.sin_addr.s_addr = INADDR_ANY;
bind ( Descriptor, (struct sockaddr *)&Direccion, sizeof (Direccion));

/* Recibimos del Remitente*/


struct sockaddr_in Remitente; /* Datos del Remitente*/
int longitudRemitente = sizeof(Remitente);
char buffer[100];
recvfrom (Descriptor, buffer, sizeof(buffer), 0, (struct sockaddr *)&Remitente, &longtudRemitente);

/* Respondemos al Remitente*/
sendto (Descriptor, buffer, sizeof(buffer), 0, (struct sockaddr *)&Remitente, longitudRemitente);
Programming: Ejemplo Cliente
/* Creamos el socket */
int Descriptor;
Descriptor = socket (AF_INET, SOCK_DGRAM, 0);

/* Nos linkeamos a un puerto */


struct sockaddr_in Direccion;
Direccion.sin_family = AF_INET;
Direccion.sin_port = 0; /* Dejamos que el sistema elija el puerto */
Direccion.sin_addr.s_addr = INADDR_ANY;
bind ( Descriptor, (struct sockaddr *)&Direccion, sizeof (Direccion));

/* Enviamos al Destinatario*/
struct sockaddr_in Destinatario; /* Datos del Destinatario*/
Destinatario.sin_family = AF_INET;
Destinatario.sin_port = ...; /* Puerto del Server */
Destinatario.sin_addr.s_addr = ...; /* IP del Server */
int longitudDestinatario = sizeof(Destinatario);
char buffer="hola";
sendto (Descriptor, buffer, sizeof(buffer), 0, (struct sockaddr *)&Destinatario, longitudDestinatario);

También podría gustarte