Comunicación entre procesos (BSD) CI-2400 Programación Avanzada en Sistemas de Tipo UNIX Prof. Braulio José Solano Rojas ECCI, UCR

Documentos relacionados
Arquitecturas Cliente/Servidor

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

DESARROLLO DE APLICACIONES DISTRIBUIDAS. SOCKETS en UNIX

PROGRAMACIÓN CON SOCKETS

Migrando aplicaciones a IPv6

SOCKETS BASADOS EN CONEXIÓN (SOCK_STREAM)

Boletín 7- Sockets. Departamento de Lenguajes y Sistemas Informáticos

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

Mecanismos IPC: sockets

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

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

Sistemas Distribuidos. Sockets

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

Sistemas de Transportes de Datos (STD) Tema III: UDP y TCP (Entrega 4) Grupo de Aplicaciones Telemáticas. Grupo de Aplicaciones Telemáticas

Sistemas Operativos Distribuidos

Estructuras y funciones de programación de sockets.

Adaptación de aplicaciones a IPv6

PRÁCTICA 4 PASO DE MENSAJES

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

Diseño de aplicaciones distribuidas ÍNDICE

Estructuras y funciones de programación de sockets.

Desarrollo de Aplicativos con winsockets

Sockets Básicos. Sockets Básicos

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

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

Interfaz de Socket. Agustín J. González ELO309 ELO309 1

Servicios de Internet

Tema 3: COMUNICACIÓN ENTRE PROCESOS

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

Analista Universtiario en Sistemas. Sistemas Operativos. IPC - Sockets SOCKETS

Sockets Básicos. APIS para acceso a TCP/IP. APIS para acceso a TCP/IP. APIS para acceso a TCP/IP. APIS para acceso a TCP/IP. Temas a tratar...

Programación con sockets

Laboratorio de Sistemas Operativos

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

COMUNICACIÓN Sistemas Distribuidos

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

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

Servicios de Internet

TEMA 1. Introducción a las arquitecturas distribuidas

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

Arquitecturas cliente/servidor

SISTEMAS DE COMUNICACIONES DE DATOS

Administración de redes en GNU/Linux

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Facultad de Ingeniería

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

Tema 4 Sockets: Un interfaz con TCP/IP

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

Introducción de Sockets en C.

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Tema 2. Comunicación entre procesos

Manejo de sockets IPv6

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

Tema 4: Sockets: Un interfaz con TCP/IP

Introducción a Sockets en Linux

Redes de Computadores 1 Introducción a las Redes

Sistemas Operativos Distribuidos

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

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

Introducción a las Redes de Computadoras

Introducción a las Redes de Computadoras. Capa de aplicación. Programación con Sockets. Capitulo 2 Capa de Aplicación

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

SOCKET S. Alberto Castro Rojas

COMUNICACIÓN ENTRE PROCESOS SOCKETS

Programación en red sobre TCP/IP Interface sockets

UDP Tema 3.- Nivel de transporte en Internet

Programación de protocolos con sockets crudos

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

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

Desarrollo de Aplicaciones Distribuidas. Sockets. Daniel Avellaneda

Sistemas Distribuidos

Capítulo III: JGTel. JGTel es un prototipo el cual permite comunicar a un usuario de computadora con

Informe Final Experiencia 3 Sockets y RPC

Sistemas Operativos Distribuidos. Comunicación de Procesos en Sistemas Distribuidos

Formatos para prácticas de laboratorio

Portando aplicaciones a IPv6

Prácticas de Sistemas operativos

Programación C/S Básica

Formato para prácticas de laboratorio

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

Guía Beej de Programación en Redes

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

TELEPROCESO Y SISTEMAS DISTRIBUIDOS

Entrada y Salida de Archivos

Capa Aplicación: Programación de sockets

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

Conexión segura al Laboratorio

Responda a las siguientes preguntas cortas justificando

CENTRO DE ESTUDIOS NOVA - Cartagena Laboratorio de Software de Comunicaciones TEMA 1 FUNDAMENTOS DE SOCKETS TCP Y UDP

Bloque III: El nivel de transporte. Tema 6: Conexiones TCP

Bloque III: El nivel de transporte. Tema 6: Conexiones TCP

Redes de Computadores Más sobre TCP. Área de Ingeniería Telemática Dpto. Automática y Computación

Capa Aplicación: Programación de sockets

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

Versión 1.0, 26 de marzo de 2.000

PROTOCOLOS PARA LA INTERCONEXIÓN DE REDES

Laboratorio de Robots Móviles Practica No. 4. Uso de del robot móvil TurtleBot

Problemas de Redes de Computadores. Conjunto de problemas 1

Arquitecturas cliente/servidor

PROTOCOLO FTP PROTOCOLO DE TRANSFERENCIA DE ARCHIVOS ING. RAUL BAREÑO GUTIERREZ RAUL BAREÑO GUTIERREZ 1

Transcripción:

Comunicación entre procesos (BSD) CI-2400 Programación Avanzada en Sistemas de Tipo UNIX Prof. Braulio José Solano Rojas ECCI, UCR

Mecanismos IPC del sistema 4.3BSD La interfaz de comunicación entre procesos BSD va a posibilitar comunicar procesos que se estén ejecutando bajo el control de una misma máquina o bajo el control de máquinas distintas. Cuando los procesos estén bajo el control de máquinas distintas será necesario que entre en juego redes de conexión entre computadores.

Cliente/Servidor Proceso servidor Proceso cliente Abrir el canal de comunicación. Abrir el canal de comunicación. Comunicar a la red la dirección del canal. Conectar con la dirección del servidor. Esperar petición de servicio. Pedir servicio. fork() Esperar respuesta. Atender al cliente. Fin del proceso cliente. Fin del proceso hijo.

Llamadas para el manejo de sockets La interfaz de Berkeley se ha codificado para que sea muy similar a la del sistema de archivos. Por ello algunas de las llamadas para manejar archivos van a estar disponibles también para manejar sockets.

Apertura de un punto terminal Se utiliza socket para abrir un canal bidireccional de comunicaciones. int socket(int af, int type, int protocol);

Nombre de un socket La llamada bind se utiliza para unir un socket a una dirección de red determinada. int bind(int sfd, const void *addr, int addrlen);

Disponibilidad para recibir peticiones Cuando se abre un socket, el programa servidor indica que está disponible para recibir peticiones mediante la llamada listen. int listen(int sfd, int backlog);

Petición de conexión Para que un cliente pueda conectarse a un servidor debe utilizar la llamada connect. int connect(int sfd, const void *addr, int addrlen);

Aceptación de una conexión Los procesos servidores leerán las peticiones de servicio mediante la llama accept. int accept(int sfd, const void *addr, int *addrlen);

Lectura de mensajes Una vez que hay canal de comunicaciones entre los procesos servidor y cliente está correctamente iniciado. Las llamadas para leer son: size_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 de mensajes Las siguientes son las llamadas para escritura: 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[], int flags);

Cierre del canal Cuando no se necesita más el canal simplemente se utiliza la llamada close.

Llamadas y funciones misceláneas Las llamadas vistas en las filminas anteriores dan la manipulación básica de los sockets. Otras llamadas amplían la biblioteca de funciones para facilitar la labor del programador.

Nombres de un socket Para averiguar el nombre de un socket orientado a la conexión se utilizan los siguientes llamados: int getsockname(int sfd, void *addr, int *addrlen); int getpeername(int sfd, void *addr, int addrlen);

Nombre del nodo actual Para determinar el nombre que tiene el nodo dentro de la red se puede utilizar: int gethostname(char *hostname, size_t size);

Tuberías a partir de sockets La llamada socketpair se utiliza para crear un par de sockets que van a estar conectados y que posibilitan, cada uno por separado, una comunicación bidireccional. int socketpair(int family, int type, int protocol, int sockvec[2]);

Cierre de un socket Aunque la llamada close puede utilizarse para cerrar un socket, existe una llamada que da más control. La llamada shutdown se utiliza para cerrar total o parcialmente un socket. int shutdown(int sfd, int how);

Lectura del archivo /etc/hosts En el archivo /etc/hosts se guarda información sobre los computadores de la red. struct hostent *gethostent(); struct hostent *gethostbyname(name); struct hostent *gethostbyaddr(const char *addr, int len, int type); int sethostname(int stay open); int endhostent();

Lectura y examen corto https://www.freebsd.org/doc/en/books/developer s-handbook/sockets-essential-functions.html

Gracias por su atención! Preguntas?