Programacion_de_Sockets_en_C
Páginas: 5 (1069 palabras)
Publicado: 27 de septiembre de 2015
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.