Arquitecturas Cliente/Servidor



Documentos relacionados
Sistemas Operativos Distribuidos

Sistemas Distribuidos. Sockets

Migrando aplicaciones a IPv6

DESARROLLO DE APLICACIONES DISTRIBUIDAS. SOCKETS en UNIX

Estructuras y funciones de programación de sockets.

BOLETIN 8 INDICE. ordenación de bytes. conversión de nombre y direcciones.

Mecanismos IPC: sockets

Estructuras y funciones de programación de sockets.

Tema 3: COMUNICACIÓN ENTRE PROCESOS

Ingeniería Técnica de Telecomunicación, esp. Telemática Universidad de Jaén

Introducción de Sockets en C.

UNIVERSIDAD DE CANTABRIA DEPARTAMENTO DE INGENIERÍA DE COMUNICACIONES GRUPO DE INGENIERÍA TELEMÁTICA

Práctica 2 Programación de Aplicaciones Distribuidas: Sockets TCP. Laboratorio de Comunicación de Datos ITT Telemática 26 de Septiembre 2011

SOCKET S. Alberto Castro Rojas

Introducción a la programación con sockets en C

Diseño de aplicaciones distribuidas ÍNDICE

TELEPROCESO Y SISTEMAS DISTRIBUIDOS

Sockets (UDP) Tema 2.- Nivel de aplicación en Internet

Adaptación de aplicaciones a IPv6

Programación Básica de Sockets en Unix para Novatos

Tema 4 Sockets: Un interfaz con TCP/IP

Práctica 1 Programación de Aplicaciones Distribuidas: Sockets UDP. Laboratorio de Comunicación de Datos ITT Telemática Septiembre 2011

Qué es un socket? Dominios de comunicación. Tipos de sockets en el dominio AF_INET. Sockets Stream. Sockets Datagram. Sockets Raw

Sockets (TCP) Tema 2.- Nivel de aplicación en Internet

COMUNICACIÓN Sistemas Distribuidos

Programación con sockets

Desarrollo de Aplicativos con winsockets

ARQUITECTURA DE REDES Laboratorio PRÁCTICA 2: MANUAL DE SOCKETS EN C. Grado en Ingeniería Informática Curso 2014/15

Tema 4: Sockets: Un interfaz con TCP/IP

COMUNICACIÓN ENTRE PROCESOS SOCKETS

INTRODUCCIÓN A LA PROGRAMACIÓN CON SOCKETS. Celeste Campo Carlos García Rubio

Mecanismo(s) de intercambio de información entre 2 ó más computadores conectados entre sí o a través de otros.

Tema 2. Comunicación entre procesos

Administración de redes en GNU/Linux

-> Todo socket viene definido por dos características fundamentales:

Alumno: Grupo: Ejercicio 1. Responda a las siguientes preguntas cortas justificando brevemente su respuesta (3 puntos).

sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM)

Clase de Sockets en lenguaje C. Prof. Ricardo González

Programación de protocolos con sockets crudos

Nivel de Transporte en Internet

Programación C/S Básica

ADMINISTRACIÓN GENERAL DE TECNOLOGÍA DE LA INFORMACIÓN ADMINISTRACIÓN CENTRAL DE DESARROLLO Y MANTENIMIENTO DE APLICACIONES

Manejo de sockets IPv6

API del SO + Comunicación entre procesos (IPC)

AMPLIACION DE SISTEMAS OPERATIVOS SOCKETS AIRAN GODOY HERNANDEZ JOSE MARIA RODRIGUEZ RODRIGUEZ 5º INGENIERIA EN INFORMATICA

Modem IBM Compatible. IBM Compatible. Ethernet IBM AS/400. Laser printer. Workstation. Mac II. El Interfaz. Socket. versión perliminar

Programación en red sobre TCP/IP Interface sockets

Desarrollo de Aplicaciones Distribuidas. Sockets. Daniel Avellaneda

Redes de Computadores Nivel de Aplicación: Programación con sockets I

Comunicación entre procesos (IPC) (+ Continuación API del SO)

MANEJO DEL SISTEMA DE ARCHIVOS

Arquitecturas cliente/servidor

TEMA 1. Introducción a las arquitecturas distribuidas

Guía Beej de Programación en Redes

Capítulo 5. Programación de aplicaciones de red

Responda a las siguientes preguntas cortas justificando

Práctica 5: Implementación en C++ de sistemas cliente/servidor basados en comunicación

Tema 4.1: - TRANSPORTE-

Introducción a Sockets en Linux

Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1

Programación de sockets

Los sockets de Unix. Dr. Roberto Gómez Cárdenas ITESM-CEM. Dr. Roberto Gomez C. Diapo. No.

Sistemas Distribuidos

Arquitectura de Redes y Servicios de Telecomunicación

SOCKETS en Linux. Lic. Leonardo de - Matteis. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur 2011

Definiciones preliminares

Características de un lenguaje ideal para robótica

Sockets ARISO II - ETSETB. Modelo OSI

Transcripción:

Arquitecturas Cliente/Servidor Integrantes: Arellano Santiago Víctor Manuel Girón Capistrán Aldo Iván Guerrero Ramirez Eduardo Daniel Rosas Peña Ramiro

SOCKETS EN C.

LLAMADAS PARA EL MANEJO DE SOCKETS Basada en el uso de descriptores de sockets de manera análoga a la escritura y lectura de archivos. Cabeceras a utilizar de forma general: types.h, socket.h, uio.h

Creación de un socket: socket( ) Para que una persona pueda recibir llamadas debe tener instalado un teléfono, para poder realizar una conexión se debe crear un socket. Los sockets se crean llamando a la función socket(), esta función retorna un descritpor de socket, que es tipo int. Si hubo algún error, socket() retorna -1 y la variable global errno se establece con un valor que indica el error que se produjo sockf= socket ( int dominio, int tipo, int protocolo );

SOCKET int socket(int af, int type, int protocol); Función: abre un canal bidireccional de comunicaciones, devuelve un descriptor. af: especifica la familia de sockets a emplear. Las principales son AF_UNIX y AF_INET. type: Tipo de socket ya sea orientado a la conexión SOCK_STREAM y no orientado a la conexión: SOCK_DGRAM protocol: Protocolo a utilizar. Si es cero, se deja en manos del sistema la elección.

BIND Función: Une un socket a un dirección de red determinada. Cabeceras: un.h para familia AF_UNIX y netinet.h para familia AF_INET. int bind(int sfd,const void *addr,int addrlen); sfd: descriptor devuelto por la función socket. addr:dirección del socket addrlen: longitud de la dirección, se calcula con el operador sizeof.

LISTEN Función: utilizada para sockets TCP, indica disponibilidad para recibir peticiones. int listen(int sfd, int backlog); sfd: descriptor del socket. backlog:longitud de la cola asociada al socket descrito.

CONNECT, ACCEPT. Función connect: permite que el cliente inicie la conexión con el servidor. int connect(int sfd, void *addr, int addrlen); Función: Los procesos servidores leen peticiones de servicio. int accept(int sfd, void *addr, int addrlen); sfd: descriptor del socket. addr: apuntador a la estructura de dirección del socket. addrlen: Tamaño en bytes de la dirección.

Pasos para establecer la comunicación: En sockets orientados a conexión Cliente y servidor, deben crean un socket mediante la función socket(), para poder comunicarse. El servidor llama a bind() para darle un nombre al socket, para luego poder recibir conexiones, es decir establece por cual número de puerto escuchará. El servidor hablilita su socket para poder recibir conexiones, llamando a la función listen(). El servidor ejecuta la f unción accept() y queda en estado de espera, la función accept() no retorna 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. Una vez establecida la conexión se utilizan las funciones send() y recv() con el descriptor de socket del paso anterior para realizar la transferencia de datos. Para finalizar la conexión se utilizan las funciones close() o shutdown().

En sockets no orientados a conexión. Ambos, cliente y servidor, crean un socket mediante la función socket( ). El servidor debe establecer por qué número de puerto recibirá los datos, en este caso no existe la conexión, los datos se envían como si fueran mensajes.

Para realizar transferencia de datos, utilizan las funciones sendto( ) y recvfrom( ). No es necesario que el servidor llame a la función listen( ), ni tampoco el paso connect( ) o accept( ).

LECTURA/RECEPCIÓN DE MENSAJES. Lectura de datos de un socket: read, readv. Solo para sockets son: recv, recvfrom, recvmsg. ssize_t readv(int fildes, const struct iovec *iov, size_t iovcnt); int recv(int sfd, void *buf, int len, int flags); int recvfrom(int sfd, void *buf, int len, int flags, void *from, int fromlen); int recvmsg(int sfd, struct msghdr msg[], int flags);

ESCRITURA/ENVIO DE MENSAJES A UN SOCKET. Escritura de datos: write, writev. Solo para sockets: send, sendto, sendmsg. ssize_t writev(int fildes, const struct iovec *iov, size_t iovcnt); int send(int sfd, void *buf, int len, int flags); int sendto(int sfd, void *buf, int len, int flags, void *to, int tolen); int sendmsg(int sfd,struct msghdr msg[], int flags);