Servidor de Batalla Naval.

Slides:



Advertisements
Presentaciones similares
Arquitectura cliente-servidor
Advertisements

RPC Versión 2 Remote Procedure Call.
CAPA DE TRANSPORTE MODELO OSI
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Con el comando netstat (Network status) mostrará información sobre la configuración y actividad de la red.
INF 1400: Redes de Computadores
Funciones de sockets en C
TEMA 2 Técnicas básicas de construcción de aplicaciones distribuidas
Sockets y Threads en JAVA
Sistemas Informáticos Distribuidos
Tema 5 SRI Vicente Sánchez Patón I.E.S Gregorio Prieto
SOCKETS INTRODUCCIÓN DEFINICIÓN TIPOS DE SOCKETS USO DE SOCKETS.
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Introducción a Programación Concurrente
OBJETO REQUEST. El objeto Request Por qué el objeto request Funcionamiento Colecciones: – Transferencia de variables por URL –Transferencia de variables.
Comunicación entre procesos en Linux
Servidor.pl #!/usr/local/bin/perl use Socket; ($port) $port = 2345 unless $port; Empleamos el módulo Socket, equivalente a las definiciones que.
Comunicación y sincronización entre procesos
Cliente.pl #!/usr/local/bin/perl use Socket; ($them, $port) $port = 2345 unless $port; $them = 'localhost' unless $them; El primer argumento es.
Comunicación y sincronización de procesos Comunicación por tuberías.
1 IPC - Inter Process Communication Memoria – Pipes – Sockets – Rendez Vous - Mailbox.
Qué pasa cuando varios clientes tratan de conectarse al mismo teimpo a un servidor Una forma es ir atendiéndolos de a uno en un ciclo: como en el programa.
El Socket Un socket es un extremo de un link de comunicación entre dos programas que corren en una red. El socket esta asociado (amarrado, bound) a ub.
Funciones en lenguaje C
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Christophe Fontano Julien Alagnou Socket.
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Tema 6: Clases Antonio J. Sierra.
Sockets en Java. Sockets ● Para programar aplicaciones en red en Java se utilizan los Sockets. ● Un socket permite establecer y manejar una conexión entre.
Node.JS Proyecto Redes de Computadores Sem
MRMUC Instructor Notes
Archivos.
SERVIDORES DE INTERNET SISTEMAS OPERATIVOS II. PRESENTADO POR: NAZLY LUNA NAZLY LUNA MERLY URBANO MERLY URBANO FERNANDO A. MUÑOZ FERNANDO A. MUÑOZ PRESENTA.
Teoría de Sistemas Operativos
Sockets.
Conceptos avanzados Dr. Daniel Morató Area de Ingeniería Telemática Departamento de Automática y Computación Universidad Pública de Navarra
PROTOCOLO H T T P.
La Web y el HTTP. Antes del año 1990 Internet era usado por InvestigadoresAcadémicosEstudiantes Transferir archivos logearse remotamente Enviar/recibir.
SOCKETS.
File Transfer Protocol (FTP) Jorge Cobeña David González Christian Maray Andrés Valarezo.
Informática Ingeniería en Electrónica y Automática Industrial
Clase de Sockets en lenguaje C
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
COMPARATIVA CLIENT/SERVIDOR AMB SOCKETS C vs. JAVA MANEL DOMÍNGUEZ SERRA GERARD ROCA MALLOFRÉ.
Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.
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.
User Datagram Protocol UDP Juan Pablo Araneda Danilo Araya Z.
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.
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.
LABORATORIO DE ESTRUCTURA DE COMPUTADORES II Desarrollo de aplicación Cliente-Servidor.
Redes de Datos Integrantes: Guízar Gómez Gerardo Nassir López Ortega Juan Manuel Rodríguez Castro Ronald Michel Silva Rangel Ángel Eduardo Capa 5. Sesión.
INTEGRANTES : Selvin Rivas José Vásquez Francisco Pérez J’ Alberto Patal.
Estructuras con punteros: Nodos y Listas. Un programa C.
Johnny Alexander Salazar Jhon Fredy Giraldo Giraldo Sebastián Cardona.
Registros de recursos DNS.
Capa Aplicación: Programación de sockets
Curso Redes (IS20) -Capítulo 5 1 Redes (IS20) Ingeniería Técnica en Informática de Sistemas Práctica 2- Comunicación de procesos mediante sockets.
Nivel de Transporte en Internet
Servidor de Almacenamiento de correo SG14, SG15, SG16 y SG17.
Modelo OSI Para redes………
PROTOCOLO SSL. DEFINICIÓN SSL son las siglas en inglés de Secure Socket Layer (en español capa de conexión segura). Es un protocolo criptográfico (un.
MEMORIA DINÁMICA.
Tema 1. Estructuras de datos Objetivo: Objetivo: El alumno resolverá problemas de almacenamiento, recuperación y ordenamiento de datos y las técnicas de.
En informática, es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol)
1 Introducción a las Comunicaciones en Red. import java.net.InetAddress; import java.net.UnknownHostException; public class PruebaSockets { public static.
Conceptos Básicos de Programación
Programación con sockets I
Programación con sockets II
Transcripción de la presentación:

Servidor de Batalla Naval. Computación II. Servidor de Batalla Naval. Geronimo Manso.

Temas a Tratar: Objetivos. Arquitectura. Estructura. Sockets y detalles. Hilos. Semáforos. Programa Servidor. Programa Cliente. Demo. Gerónimo Manso.

Objetivos: Aplicación de conceptos tales como: Sockets. Hilos. Semáforos. Se parte de lo conocido hacia los nuevos conceptos, con el fin de centrarse en lo aprendido. Código conocido Nuevos conceptos Gerónimo Manso.

Arquitectura: Cliente/Servidor Servidor Clientes Gerónimo Manso.

Estructura: El programa servidor esta compuesto por los siguientes archivos: Batalla.c Socket.c Socket_Servidor.c Servidor.c El programa cliente : Batalla.c Socket.c Socket_Cliente.c Cliente.c Gerónimo Manso.

Sockets: Tipos de sockets: Se podría decir que un socket es un canal de comunicación entre dos programas que corren en dos pc diferentes o también en la misma. Tipos de sockets: Orientados a conexión: TCP No orientados a conexión: UDP Gerónimo Manso.

Sockets: Servidor Los pasos básicos utilizados en el servidor son: 1 – Apertura de un socket:  socket(); //Retorna un descriptor. 2 – Asociación del programa con el socket:  bind(); 3 – Indicar que se comience a atender las conexiones:  listen(); 4 – Obtener y aceptar las conexiones:  accept(); 5 – Escritura y lectura de datos:  write() y read(); Gerónimo Manso. 6 – Cierre de conexiones:  close();

Sockets: Cliente Los pasos utilizados en el cliente son: 1 – Apertura de un socket:  socket(); 2 – Solicitud de conexión:  connect(); 3 – Escritura y lectura de datos:  write() y read(); 4 – Cierre de conexiones:  close(); Gerónimo Manso.

Sockets: Servidor - Detalles Descripción de la sunción socket(): Función socket(AF_INET, SOCK_STREAM, 0); //Retorna un descriptor. Argumentos: Primero: AF_INET (Clientes pueden estar en otros ordenadores). AF_UNIX (Cliente corre en el mismo ordenador, aunque es mas óptimo). Segundo: SOCK_STREAM (Socket orientado a conexión). SOCK_DGRAM (Socket no orientado a conexión). Tercero: Se indica el protocolo a emplear, generalmente se pone 0. Gerónimo Manso.

Sockets: Servidor - Detalles Obtención del número de puerto: Obtenemos el número de servicio al que se quiere atender, mediante la función getservbyname(); que nos devuelve un puntero a una estructura del tipo servent: Descripción: struct servent Puerto; Puerto = getservbyname(“Nombre del Servicio”,”Protocolo”); /* Se encuentra en el archivo /etc/services */ En esta estructura lo que nos interesa es el campo puerto: Puerto->s_port; Gerónimo Manso.

Sockets: Servidor - Detalles Descripción de la función bind(): Antes se debe declarar la siguiente estructura: struct sockaddr_in Direccion; Completar los siguientes parámetros: Direccion.sin_family = AF_INET; /* Igual que en socket()*/ Direccion.sin_port = Puerto->s_port; /* Nº de puerto*/ Direccion.sin_addr.s_addr =INADDR_ANY; /* Direccion del cliente. Cualquiera en este caso*/ La función es: bind (Descriptor, (struct sockaddr *)&Direccion, sizeof (Direccion)); /* retorna -1 si hay error*/ Gerónimo Manso.

Sockets: Servidor - Detalles Descripción de la función: listen(Descriptor, 10): /*Si hay error retorna -1*/ Argumentos: Descriptor del sockets. Número máximo de clientes en la cola. Para atender a los clientes utilizamos accept(): struct sockaddr Cliente; int Descriptor_Cliente; int Longitud_Cliente; Descriptor_Cliente = accept(Descriptor, &Cliente, &Longitud_Cliente); Descriptor del socket abierto; Puntero a una estructura sockaddr en la que obtendrá datos del cliente. Puntero a un entero, con la longitud útil del campo anterior. Gerónimo Manso.

Sockets: Servidor - Detalles Descripción de las funciones: read(Descriptor, Datos, Longitud); write(Descriptor, Datos, Longitud); /*Si hay error retorna -1 y 0 si el socket se ha cerrado o llegado a su fin*/ Aclaración: Estas funciones se suelen utilizar en un lazo ya que pueden retornar sin haber escrito o leído todos los datos. Finalmente utilizamos close(); close(Descriptor_del_socket_a_cerrar); Gerónimo Manso.

Sockets: Cliente - Detalles Explicaré solo las funciones que difieren del servidor. Explicación de la función conect(); Obtención del IP de servidor: struct hostent *Host; Host = gethostbyname ("Nombre_Servidor"); struct sockaddr_in Direccion; Direccion.sin_family = AF_INET; Direccion.sin_addr.s_addr = ((structin_addr*)(Host->h_addr))->s_addr; /*INADDR_ANY Pusimos en el server*/ Direccion.sin_port = Puerto->s_port; connect (Descriptor, (struct sockaddr *)&Direccion,sizeof (Direccion)) /* Retorna -1 si hay error*/ Gerónimo Manso.

Hilos: 1 - Para utilizar hilos incluyo el header: pthread.h 2 - Creo la función que será ejecutada en el segmento del hilo. void *hilo(void *args){ //El argumento es para pasarle información al hilo /* CODIGO DEL HILO*/ return NULL; } Gerónimo Manso. 3 - Declaro la estructura para crear al hilo: pthread_t hilo_estruc;

Hilos: 4 - Creo el hilo de la siguiente manera: Argumentos: pthread_create(&hilo_struc, NULL, &hilo1, NULL); Argumentos: Puntero a la estructura del hilo. Atributos del hilo: en este caso atributos default. Puntero a la función. Para pasarle información al hilo. Gerónimo Manso.

Semáforos: 1 - Para utilizar semáforos incluyo el header: semaphore.h 2 - Declaro la estructura: sem_t semaforo; 3 - Inicializo el semáforo con: sem_init (&semaforo,0,1); Valor inicial del semáforo Gerónimo Manso. 0 ya que se utilizan hilos Puntero a la estructura

Semáforos: 4 - Para decrementar el semáforo utilizo la siguiente función: sem_wait(&semaforo); 5 - Utilizo la variable global. 6 - Para incrementar el semáforo utilizo: sem_post(&semaforo); Gerónimo Manso.

Computación II. Demo Fin Gerónimo Manso.