Programacion_de_Sockets_en_C

Páginas: 5 (1069 palabras) Publicado: 27 de septiembre de 2015
FIE

UMSNH

Programación de Sockets en C.

Presenta: M.C. José Francisco Rico Andrade.

Introducción

Introducción
 ¿Qué es un Socket?
 Interfaz de entrada-salida de datos
Permite intercomunicación entre procesos
En el mismo o en distinto sistema
 unidos mediante una red.

Introducción
 Dominio de comunicación
 Los sockets se crean dentro de un
dominio de comunicación
AF_INET(mediante una red TCP/IP).
AF_UNIX (mismo sistema).
Otros dominios.

Introducción
 Sockets AF_INET
 Sockets Stream.
 TCP

 Sockets Datagram.
 UDP

 Sockets Raw.
 Desarrollo de nuevos protocolos

Introducción
 Endianers
 Big Endian. (0x4A3B = {4A, 3B})
 Red TCP/IP
 Host JVM

 Little Endian. (0x4A3B = {3B, 4A})
 Host Intel

Estructuras y
Funciones Básicas

Estructuras y Funciones Básicas Cabeceras.
 #include
 Define
estructuras,
constantes
manipulación de direcciones de red.

y

funciones

para

y

funciones

para

 #include
 Define
estructuras,
constantes
manipulación de sockets.

 #include
 Define operaciones para Sockets TCP/IP

Estructuras y Funciones Básicas
 Estructuras.
 struct sockaddr 

// Familia AF_* 
unsigned shortsa_family;
// Direccion de protocolo. 
char sa_data[14];
}; 
 Almacena la dirección de protocolo para muchos
tipos de protocolos.

Estructuras y Funciones Básicas
 Estructuras.


struct sockaddr_in // Direccionamiento TCP/IP
{
// Familia: AF_INET
short int sin_family;
// Numero de puerto (0 = Aleatorio).
unsigned short sin_port;
// Dirección IP.
struct in_addr sin_addr;
// Relleno.
unsignedchar sin_zero[8];
};

Estructuras y Funciones Básicas
 Estructuras.
 struct in_addr
{
unsigned long s_addr; // 4 bytes.
};
 INADDR_ANY - IP del host local (numero + puntos)

Estructuras y Funciones Básicas
Funciones para conversión de Endianers.
 short htons(short) - host to network short
 short int de little-endian a big-endian

 long htonl(long) - host to network long
 long int delittle-endian a big-endian .
 short ntohs(short) - network to host short
 short int de big-endian a little-endian .
 long ntohl(long) - network to host long
 long int de big-endian a little-endian .

Estructuras y Funciones Básicas
 Creación de un Socket
sockfd = socket ( int dominio, int tipo, int
protocolo );

Sockfd - Descriptor de socket devuelto. Luego se utilizará
para conectarse, recibirconexiones, enviar y recibir datos, etc.
Dominio – Dominio donde se realiza la conexión. (AF_INET).

Tipo - SOCK_STREAM o SOCK_DGRAM o SOCK_RAW.
Protocolo - 0 (selecciona el protocolo más apropiado).

Estructuras y Funciones Básicas
Asignación de Nombre al Socket
 Es necesario asociar a cada socket una dirección
IP y número de puerto.
int bind(int sockfd, struct sockaddr *my_addr, intaddrlen)

 sockfd - El descriptor del socket.
 my_addr - puntero a una estuctura sockaddr que
contiene la IP del host local y el número de puerto que se
va a asignar al socket..
 addrlen - Tamaño de la estuctura sockaddr.

Estructuras y Funciones Básicas
Otras Funciones.

unsigned long inet_addr(constant char *)
 Pasa un IP de representación numero con puntos a unsig. long

constant char *inet_ntoa(unsigned long)
 Pasa un IP de representación unsigned long a numero con puntos

Establecer Conexión

Establecer Conexión
 Flujogramas
Cliente y servidor, deben crean un socket mediante la función
socket().
El servidor llama a bind() para nombrar al socket. No aplica al
cliente.
El servidor hablilita su socket para poder recibir conexiones,
llamando a la función listen(). No aplica alcliente.
 El servidor ejecuta la función accept() y queda en estado de
espera, hasta que intenten conectarse. El cliente usa la función
connect() para realizar el intento de conexión.
 En ese momento la función accept() del servidor retorna con un
parámetro que es un nuevo descriptor de socket, el cual se utiliza
para realizar la transferencia de datos por la red con el cliente.

Establecer...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS