Programación con sockets I

Slides:



Advertisements
Presentaciones similares
Arquitectura cliente-servidor
Advertisements

DIRECCIONES IP.
Protocolos de Inter-red
TEMA1. Servicios de Red e Internet
Con el comando netstat (Network status) mostrará información sobre la configuración y actividad de la red.
Funciones de sockets en C
TEMA 2 Técnicas básicas de construcción de aplicaciones distribuidas
Sistemas Informáticos Distribuidos
SOCKETS INTRODUCCIÓN DEFINICIÓN TIPOS DE SOCKETS USO DE SOCKETS.
Capa de transporte.
Servidor.pl #!/usr/local/bin/perl use Socket; ($port) $port = 2345 unless $port; Empleamos el módulo Socket, equivalente a las definiciones que.
Servidor de Batalla Naval.
SERVICIO DHCP Mª Begoña Castells 2º S.M.R.. Cuestiones de repaso IP.- Código que identifica una interfaz o dispositivo dentro de una red TCP/IP Es un.
Sockets.
SOCKETS.
Contenido Sistemas distribuidos Sistemas operativos distribuidos
Redes 3º curso Ingeniería Técnica en Informática de Sistemas UNED.
CAPA DE RED  Aquí se lleva a cabo el direccionamiento lógico que tiene carácter jerárquico, se selecciona la mejor ruta hacia el destino mediante el.
TCP/IP Introducción TCP/IP Introducción. TCP/IP vs OSI Aplicación Presentación Sesión Transporte Red Enlace Física Aplicación Acceso a la red Física TCP/IP.
Clase de Sockets en lenguaje C
Fundamentos de TCP/IP.
COMPARATIVA CLIENT/SERVIDOR AMB SOCKETS C vs. JAVA MANEL DOMÍNGUEZ SERRA GERARD ROCA MALLOFRÉ.
ELO3091 Interfaz de Socket Agustín J. González ELO309.
Sockets programming. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.
Universidad Autónoma de Colombia Comunicación de procesos Sockets Ingeniería de Sistemas Electiva Tecnológica.
Departamento de Arquitectura y Tecnología de Computadores E.T.S. Ingeniería Informática Lección 2. La API de Sockets Julio Ortega Lopera. Curso 2004/2005.
Protocolo DHCP.. DHCP es un protocolo estándar propuesto. Su estado es electivo. Las especificaciones actuales de DHCP se pueden encontrar en el RFC 1541.
1 SOCKETS AIRAN GODOY HERNANDEZ JOSE MARIA RODRIGUEZ RODRIGUEZ 5º INGENIERIA EN INFORMATICA AMPLIACION DE SISTEMAS OPERATIVOS.
Andres Marín L. Programación sockets en java.
Sistemas Operativos Comunicación de procesos a través de sockets.
LABORATORIO DE ESTRUCTURA DE COMPUTADORES II Desarrollo de aplicación Cliente-Servidor.
INTEGRANTES : Selvin Rivas José Vásquez Francisco Pérez J’ Alberto Patal.
Protocolos del modelo TCP/IP
4. Introducción a IP,TCP,UDP,ARP,ICMP
Capítulo 3: Capa Transporte - I
Aplicaciones De Conexión Entre Capas. el envío y recepción de datos entre dos aplicaciones es un proceso de intercambio de datos entre capas iguales,
Protocolos de Transporte y Aplicación. – TCP y UDP
Nivel de Transporte en Internet
C1-Sistemas Distribuidos Concurrencia Varias componentes en una misma máquina-> Concurrencia Inteleaving (1 sola CPU, N procesos) Paralelo (N CPU, M procesos)
UD 2: “Instalación y administración de servicios de configuración automática de red” Protocolo DHCP Luis Alfonso Sánchez Brazales.
Protocolos de Transporte y Aplicación
Protocolos de Transporte y Aplicación Javier Rodríguez Granados.
1 Introducción a las Comunicaciones en Red. import java.net.InetAddress; import java.net.UnknownHostException; public class PruebaSockets { public static.
¿Qué es un socket? trab/satobigal/documentacion/beej/index.html Es una forma de comunicarse con otros programas usando.
Capítulo 2. Direccionamiento Instalación y Mantenimiento de Servicios de Redes Locales I.E.S. Murgi Curso Jose L. Berenguel Gómez Mª Jose Peinado.
INTEGRANTES: JORGE CRUZ DE OCAMPO EDSON SANCHEZ SUAREZ
UF0854: Instalación y configuración de los nodos de una red local.
Capa Aplicación: Programación de sockets
Teleprocesos Ing. Leonardo Párraga.
Capítulo 3: Capa Transporte - I
Capa Aplicación: Programación de sockets
Protocolo de comunicación
Conceptos Básicos de Programación
Programación con sockets II
Capa Aplicación: Programación de sockets
Capa Aplicación: File Transfer Protocol
DOCENTE: EMILIO ISMAEL BUSTAMANTE MONTES
Taller de Programación en Redes
Protocolos Protocolos de red.
66.69 Criptografía y Seguridad Informática FIREWALL.
Punto 6 – Parámetros y declaraciones de configuración
Capa Aplicación: Programación de sockets
Parámetros y declaraciones de configuración DHCP
PROTOCOLO TCP Protocolo de Control de Transmisión.
Capítulo 3: Capa Transporte - I
En la familia de protocolos de Internet UDP proporciona una sencilla interfaz entre la capa de red y la capa de aplicación. UDP no otorga garantías para.
CAPA DE RED- OSI. Intercambiar secciones de datos individuales a través de la red entre dispositivos finales identificados. Provee servicios para:
NOTA: Para cambiar la imagen de esta dispositiva, seleccione la imagen y elimínela. A continuación haga clic en el icono Imágenes en el marcador de posición.
Capa Aplicación: 2.7 Programación de sockets
Introducción a la Programación. Modulo 61 Programación Web Programación Web.
Transcripción de la presentación:

Programación con sockets I

Aplicaciones cliente/servidor sobre TCP/IP API SOCKET UDP TCP UDP TCP Puerto (16 bits) IP IP Dirección (32 bits) Red servidor cliente

Aplicaciones cliente/servidor sobre TCP/IP Dirección IP: localiza un interface de red de ordenador en Internet. Puerto: identifica las aplicaciones dentro del ordenador, puede utilizar los protocolos de transporte TCP (orientado a conexión) o UDP (no orientado a conexión). Una asociación se define por: Dirección IP cliente. Puerto cliente. Dirección IP servidor. Puerto servidor. Protocolo de transporte: TCP o UDP. Una comunicación está definida por una asociación. Si cambia un solo parámetro, es otra asociación distinta: <193.146.9.1, 1500, 193.146.9.34, 1800, UDP> <193.146.9.1, 1501, 193.146.9.34, 1800, UDP> <193.146.9.1, 1502, 193.146.9.34, 1800, UDP>

Esquema de aplicación con UDP server client Socket() bind() socket() recvfrom() Espera sendto() Procesado de la petición recvfrom() Espera sendto() close() close()

Dominio de direcciones Estructura genérica de una dirección (utilizada en las llamadas a las funciones): struct sockaddr { u_short sa_family; /* familia de la dirección, 2 bytes */ char sa_data[14]; /* 14 bytes de dirección como máximo*/ }; Estructura particular del dominio Internet (utilizada en Internet): AF_INET struct sockaddr_in { short sin_family; /* debe valer AF_INET, 2 bytes */ u_short sin_port; /* número de puerto, 2 bytes */ struct in_addr sin_addr; /* dirección Internet , 4 bytes */ char sin_zero[8]; /* campo de 8 bytes ceros, no usada */ struct in_addr { u_long s_addr; /* dirección IP 32 bits, en formato de red */

Funciones de conversión Hay 4 tipos de funciones de conversión: unsigned long htonl (x) /* host to network long */ unsigned long x; unsigned short htons(x) /* host to network short */ unsigned short x; unsigned long ntohl(x) /* network to host long */ unsigned short ntohs(x) /* network to host short */ Se utiliza htohs() para convertir el puerto.

Funciones de conversión Traducir una dirección IP en ASCII en notación punto “aaa.bbb.ccc.ddd” a formato de red. unsigned long inet_addr(char *ptr); Traducir una dirección IP en formato de red a una dirección en ASCII notación punto. char* inet_ntoa(struct inaddr) Necesitamos añadir los siguientes includes: #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h>

Otras funciones Rellenar con ceros una estructura: bzero(char *adr, int lg) Utilidad: inicializar la estructutra de la dirección. struct sockaddr_in dir_cli; /* declaración */ bzero ((char*) &dir_cli, sizeof (dir_cli)); Tratamiento de errores: utilizada para tratar el resultado de las llamadas de sockets. If (n < 0) error(“error en sendto\n”); void error(char *mesg) { perror(mesg); exit (1); }

Completar información de dirección. Es necesario completar la dirección del destinatario del mensaje: #define SERVER “172.29.20.5” #define SERVER_PORT “6500” struct sockaddr_in server; /*declaración*/ bzero((char *) &server, sizeof(server));/*poner a cero*/ /*inicializa dirección y puerto*/ server.sin_family = AF_INET; server.sin_addr.s_addr = inet_addr(SERVER); server.sin_port = htons(SERVER_PORT);

Creación de socket Includes necesarios utilizar las llamadas a sockets: #include <sys/types.h> #include <sys/socket.h> Crea un descriptor de socket. Sintaxis: int socket(int dominio,int tipo,int protocolo) Ejemplo: sockfd = socket(AF_INET, SOCK_DGRAM,0); Devuelve un identificador del socket que utilizaremos en el resto de operaciones. Devuelve -1 si error.

Enlace de socket Enlaza el socket con una dirección y puerto local indicados. Sintaxis: int bind(int desc, struct sockaddr * p_direccion, int long) Ejemplo: struct sockaddr_in server; /* rellenar la estructura*/ bind(sockfd, (struct sockaddr*)&server, sizeof(server)); Si se produce error devuelve -1. Es obligatoria en el servidor para forzar a escuchar en un puerto determinado. Si no se utiliza, el sistema utiliza un puerto libre (válido en el cliente). En el cliente no es obligatorio pero si se hace: Si hacemos client.sin_port=0 el sistema asignará un puerto libre local libre. Si hacemos client.sin_addr = INADDR_ANY el sistema Asigna la dirección del propio interfaz.

Enviar datos Sintaxis: int sendto(desc, msg, lg, opcion, p_dest, lg_dest) int desc; /* descriptor del socket de emisión */ char* msg; /* mensaje a enviar */ int lg; /* longitud del mensaje */ int opcion; /* 0 */ struct sockaddr *p_dest; /* puntero a la dirección del socket destino */ int lg_dest; /* longitud de la dirección del socket destino */ Devuelve la longitud de los datos transmitidos en bytes o -1 si ha habido error. Ejemplo: int n; n = sendto(sockfd,(char *) &datos, sizeof(datos),0, (struct sockaddr *) &server, sizeof(server));

Recibir datos Sintaxis: Llamada bloqueante. int recvfrom(desc, msg, lg, opcion, p_exp, p_lgexp) int desc; /* descriptor del socket de recepción */ char *msg; /* buffer para el mensaje */ int lg; /* tamaño del buffer */ int opcion; /* 0 normalmente, MSG_PEEK */ struct sockaddr *p_exp; /* recupera la dirección del remitente */ int *p_lgexp; /* longitud de p_exp*/ Llamada bloqueante. La variable p_lgexp hay que inicializarla antes de llamar a recvform(). Devuelve la cantidad de bytes recibidos o -1 si hay error. Ejemplo: int ld = sizeof (client); recvfrom(sockfd, (char *)&datos, sizeof(datos), 0, (struct sockaddr *) &dir_cli, &ld );

Cerrar socket Cerrar socket. Sintaxis: close(int desc); /*se pasa el descriptor de socket*/