PRÁCTICA 2: Cliente-servidor UDP

Tamaño: px
Comenzar la demostración a partir de la página:

Download "PRÁCTICA 2: Cliente-servidor UDP"

Transcripción

1 PRÁCTICA 2: Cliente-servidor UDP El objetivo de esta práctica es la familiarización con aplicaciones elementales que usan los servicios de transporte de los sockets UDP. A lo largo de la práctica se realizarán diversas pruebas con una aplicación sencilla cliente/servidor escrita en lenguaje C. El servicio que realiza la aplicación distribuida consiste en una especie de servidor de echo; es decir, el servidor recibe un mensaje y lo reenvía de nuevo al cliente que se lo envió. Recuerda que cuando la comunicación entre dos procesos de aplicación usa los servicios de transporte UDP, cada extremo de la comunicación identifica a su socket UDP por la dirección y puerto local (por lo tanto, un paquete que llega a un equipo será entregado al socket cuyo identificador local coincida con la dirección IP destino y puerto destino del segmento UDP). INFORMACIÓN SOBRE LAS FUNCIONES DE SOCKETS Durante esta práctica se usarán las funciones más comunes para trabajar con sockets UDP. Pueden encontrar información detallada de ellas en la ayuda del manual de Linux. Esto lo puede encontrar: En Linux, escribiendo en el terminal: man <sección> función Donde sección es opcional. La ayuda del man está dividida en secciones, según la temática. Es posible que la palabra que se busque esté en varias secciones y a veces hay que indicar a cuál nos referimos. Todas las funciones que vamos a utilizar están en las secciones 2 y 3. En hay un buscador de ayuda. En an-html/html/manpageindex.html están recopiladas todas las páginas del manual de Linux. Haciendo una búsqueda con cualquier buscador de Internet. REALIZACIÓN Una vez que sabes dónde buscar información sobre sockets, puedes comenzar buscando información sobre la función socket() en el manual (p.e. Puedes buscar en ait08.us.es con ). Responde a las siguientes preguntas: 1. qué hace la llamada a socket () y qué devuelve? 2. cuántos servicios de transporte diferentes pueden usar las aplicaciones a través de los sockets? cómo se llama el tipo de sockets que ofrece el servicio de transporte de UDP? y el de TCP? Pág. 1

2 BLOQUE 1: FUNCIONAMIENTO BÁSICO DE LA PROGRAMACIÓN CON SOCKETS (I) El cliente solicita al usuario que escriba un mensaje por teclado (menos de 256 caracteres) y lo envía al servidor. Éste lo devuelve al cliente. Al ejecutar el cliente se le deben indicar por línea de comandos 3 parámetros: el identificador del socket UDP asociado al proceso con el que nos queremos comunicarnos; es decir, (a) la dirección IP o el nombre de la máquina destino y (b) el puerto asociado al proceso servidor../cliente_udp maquina_destino puerto El servidor escucha continuamente a través de su socket UDP cuyo puerto es especificado como parámetro en línea de comandos, y responde a todo el que le envíe un mensaje con el mismo mensaje. El servidor se ejecutaría con:./servidor_udp puerto Los códigos del cliente y el servidor se puede descargar desde la página web Ambos códigos se describen a continuación. CÓDIGO DEL CLIENTE Abre el código del cliente y tómate 10 minutos para estudiarlo y comprender el uso de las funciones que se utilizan. /******************************************************************* * Cliente de eco remoto sobre UDP: * * cliente dir_ip_maquina puerto * * manda mensaje a maquina, quien responde un solo mensaje * que el cliente imprime. ********************************************************************/ #include <sys/types.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <arpa/inet.h> #define TAMANO 256 /* tamano del buffer de recepcion */ void error_fatal(char *); /* Imprimer un mensaje de error y sale del programa */ int main(int argc, char *argv[]) int sock; /* descriptor del socket del cliente */ int length, n; struct sockaddr_in server, from; /* direcciones del socket del servidor y cliente */ struct hostent *hp; /* estructura para el nombre del servidor (ver gethostbyname) */ char buffer[tamano]; /* buffer de recepcion y envio del mensaje */ if (argc!= 3) fprintf(stderr,"uso: servidor puerto\n"); exit(1); /* (1) creacion del socket UDP del cliente */ sock= socket(af_inet, SOCK_DGRAM, 0); if (sock < 0) error_fatal("socket"); Pág. 2

3 server.sin_family = AF_INET; /*dominio de Internet*/ /* (2) averigua la direccion IP a partir del nombre del servidor*/ hp = gethostbyname(argv[1]); if (hp==0) error_fatal("host desconocido"); /* (3) copia la IP resuelta anteriormente en la direccion del socket del servidor */ memcpy((char *)&server.sin_addr, (char *)hp->h_addr, hp->h_length); /* (4) copia el puerto destino en la direccion del socket del servidor */ server.sin_port = htons(atoi(argv[2])); length=sizeof(struct sockaddr_in); printf("por favor, introduce el mensaje: "); memset(buffer,0,tamano); /*limpio el buffer*/ fgets(buffer,tamano-1,stdin); /* (5) envia al socket del servidor el mensaje almacenado en el buffer*/ n=sendto(sock,buffer, strlen(buffer),0,&server,length); if (n < 0) error_fatal("sendto"); /* (6) lee del socket el mensaje de respuesta del servidor*/ n = recvfrom(sock,buffer,tamano,0,&from, &length); if (n < 0) error_fatal("recvfrom"); buffer[n]='\0'; /* para poder imprimirlo con prinft*/ printf("recibido en el cliente: %s\0", buffer); /*cerramos el socket*/ if(close(sock) < 0) error_fatal("close"); void error_fatal(char *msg) perror(msg); exit(1); Listado 1. Programa cliente (cliente.c) La función de error_fatal imprime un mensaje y el código de error de la última operación efectuada, mediante la función predefinida perror. Seguidamente abandona el programa. Esta función se utilizará cuando se produzca un error irrecuperable del programa y se quiera salir inmediatamente de él. La función main crea un socket, prepara la dirección del socket UDP destinatario del mensaje (la IP y el puerto que identifican al socket en el servidor), y solicita que el usuario introduzca un mensaje. Una vez introducido el mensaje, se lo envía al servidor y se queda a la espera de la respuesta. Una vez recibida la respuesta del servidor la imprime en pantalla. Por último se cierra el socket abierto para liberar todos los recursos asociados a él en el sistema. Es importante que los sockets no se queden abiertos. Si el programa termina usando la función exit, ésta se encarga de cerrar todos los ficheros y sockets abiertos. Observe que cuando un número entero ocupa más de un byte en memoria, sus bytes se pueden almacenar bien escribiendo primero el byte más significativo (orden Big Endian) o escribiendo primero el byte menos significativo (orden Little Endian). Cuando se transmiten enteros, muchos protocolos, por convención, requieren que estos se transmitan en Big Endian (orden de bytes de red), mientras que en las máquinas estos no tienen que estar almacenados así (por ejemplo, los microprocesadores Intel usan el Pág. 3

4 orden Little Endian). Las direcciones IP y los puertos UDP y TCP se transmiten en orden de bytes de red, así que tenemos que convertirlos si nuestra máquina no usa ese orden. Para ello están las funciones htons (host to network short 16 bits), htonl (host to network long - 32 bits) y sus inversas ntohs (network to host) y ntohl. Una dirección IPv4 ocupa 4 bytes (32 bits) mientras que un número de puerto ocupa 2 bytes (16 bits). Estudie atentamente cada uno de los pasos indicados en el código y responda a las siguientes preguntas: SERVIDOR 3. qué campos tiene, y para qué se usan, la variable server? y la variable hp? (si no encuentras mejores fuentes, puedes mirar en 4. Describa el funcionamiento de las principales funciones relativas al uso de sockets utilizadas en cada uno de los pasos anteriores (cada paso esta indicado con un número en el comentario correspondiente). Busque en las fuentes mencionadas anteriormente. En su respuesta indique claramente la utilidad de cada función y los principales parámetros que recibe y devuelve. Algunas de las funciones que debe buscar son: socket, gethostbyname, sendto, recvfrom. 5. Compile el programa cliente.c y llame al ejecutable cliente. ha obtenido algún aviso?(si/no) Estudie el código del servidor. /************************************************ * Crea un servidor UDP. Recibe como argumento * en linea de comandos el numero de puerto. El servidor * nunca termina su ejecucion ***************************************/ #include <sys/types.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <arpa/inet.h> #define TAMANO 256 void error_fatal(char *msg) perror(msg); exit(1); int main(int argc, char *argv[]) int sock, length, fromlen, n; struct sockaddr_in server; struct sockaddr_in from; char buffer[tamano]; if (argc < 2) fprintf(stderr, "ERROR, no se ha indicado el puerto \n"); exit(1); /* (1) creacion del socket del servidor*/ Pág. 4

5 sock=socket(af_inet, SOCK_DGRAM, 0); if (sock < 0) error_fatal("creando el socket"); length = sizeof(server); memset(&server,0,length); /*limpio la direccion del socket del servidor*/ /* (2) vinculo la direccion IP y puerto local al socket creado anteriormente */ server.sin_family=af_inet; server.sin_addr.s_addr=inaddr_any; server.sin_port=htons(atoi(argv[1])); if (bind(sock,(struct sockaddr *)&server,length)<0) error_fatal("binding"); fromlen = sizeof(struct sockaddr_in); /* (3) bucle principal. Pongo a recibir y responder mensajes a traves del socket*/ while (1) n = recvfrom(sock,buffer,tamano,0,(struct sockaddr *)&from,&fromlen); if (n < 0) error_fatal("recvfrom"); /*datagrama recibido*/ buffer[n]='\0'; /* para poder imprimirlo con prinft*/ printf("recibido en el servidor: %s", buffer); /*enviar respuesta*/ n = sendto(sock,"recibi tu mensaje\n",17, 0,(struct sockaddr *)&from,fromlen); if (n < 0) error_fatal("sendto"); Listado 2. Programa servidor (servidor.c) El servidor crea un socket UDP asociado al puerto indicado por línea de comandos. Para ello asocia al descriptor del socket creado una dirección de socket con la función bind. La constante INADDR_ANY es una dirección comodín e indica al sistema que la dirección IP será cualquier dirección IP propia que elegirá el sistema. Responda a la siguiente pregunta: 6. cómo funciona la función bind?(parámetros de la función) por qué piensa que el cliente no la ha usado? Una vez vinculado el socket del servidor, entra en un bucle infinito donde se reciben las peticiones de los clientes y se devuelven las respuestas correspondientes. Ahora compile el programa servidor server.c y llame al ejecutable servidor. Realice las siguientes pruebas. Abra un nuevo terminal y ejecute en él el servidor en modo background (p.e. %>./servidor & ) En otro terminal, ejecute el cliente y dirija sus peticiones al servidor (use la dirección de bucle local ). (p.e. %> cliente ) 7. qué se ha mostrado en el terminal donde ejecuta el cliente? y donde se ejecuta el servidor? 8. Ahora busque la dirección IP de su ordenador, y ponga dicha dirección como dirección IP del servidor al ejecutar el cliente. obtiene el mismo resultado?. 9. Pruebe a realizar una comunicación entre dos equipos con algún compañero. Recuerde que debe averiguar la dirección IP del ordenador que ejecuta el Pág. 5

6 servidor antes de ejecutar el cliente. qué dirección IP y puertos tienen el cliente? y el servidor? (puede mirarlo con el comando netstat) o mostrarlos por pantalla modificando el código del programa. Nota, si no encuentras un compañero puedes usar (desde fuera del CdC) la máquina masai.us.es como servidor (el programa servidor se ejecuta asociado al puerto 20000). BLOQUE 2. FUNCIONES BÁSICAS DE MANEJO DE SOCKETS (II) En este segundo bloque vamos a examinar una nueva versión del programa anterior más completa donde se realizarán las siguientes mejoras: El mensaje se introduce como parte de la línea de comandos en el cliente El servidor se cierra si no recibe mensajes en un tiempo máximo (temporizador) Se utilizan funciones avanzadas y actualizadas de traducción de nombres de máquinas y servicios (consultas a bases de datos de red). Puedes descargar el código en Tómate 15 minutos para examinar el código del cliente (llamado reco) y del servidor (llamado recod), y Responde a las siguiente pregunta: 10. cuáles son, a tu juicio, las principales diferencias entre esta aplicación y la del bloque 1? A continuación se explican algunas de las nuevas funciones utilizadas en este nuevo código. FUNCIONES DE TRADUCCIÓN DE NOMBRES DE MÁQUINAS Y SERVICIOS Consulta de bases de datos de red Ahora, para hallar la dirección de la máquina destino a partir de su nombre, vamos a utilizar una función diferente a gethostbyname (considerada obsoleta en la actualidad): la función getaddrinfo. Esta función también intentará averiguar la dirección IP usando el servicio DNS (Domain Name System), buscando previamente en el archivo hosts del sistema (donde se han almacenado los nombres ya resueltos). El archivo hosts esta localizado en diferentes lugares según el sistema operativo que se utilice (ver ). Como ya sabes, si ejecutas netstat -a en un terminal obtendrás una lista de sockets abiertos junto con su identificador. En dicha lista a veces aparece el nombre de un servicio en lugar de su número de puerto asociado al socket del proceso servidor. El fichero services del sistema nos permite asociar un nombre a un puerto de un servidor (p.e. el nombre http al puerto 80). Para hallar el puerto del servicio a partir de su nombre también se puede usar la función getaddrinfo. Para la traducción inversa, de dirección IP a nombre de máquina o de puerto a nombre de servicio, se puede utilizar la función getnameinfo. Compruebe que el nombre y Pág. 6

7 dirección IP de los equipos involucrados en sus pruebas de laboratorio aparecen en el fichero hosts de su equipo. Si no es así, introdúzcalos a mano. En este segundo bloque se han usado la funciones getaddrinfo y getnameinfo ya que son compatibles con IPv4 y IPv6 (gethostbyname sólo es válida para IPv4, y es considerada obsoleta). Para evitar tener que llamarlas directamente, se han creado dos funciones en el fichero traduccion.c que nos abstrae de su complejidad: traduce_a_direccion e imprime_extremo_conexion. Uso de getaddrinfo en traduce_a_direccion A la función getaddrinfo hay que pasarle el nombre o dirección de la máquina como cadena de texto (por ejemplo, localhost o ), el nombre del servicio o el número de puerto como cadena de texto (por ejemplo, http o 80 ) y una serie de sugerencias o pistas (hints) para hacer la búsqueda: Familia de protocolos: IPv4, IPv6, ambos, Tipo de socket: datagrama, flujo, Etc. Para las prácticas solo vamos a utilizar 3 tipos de sockets: UDP para esta práctica y TCP de escucha (o pasivo) y TCP normal (de cliente o activo) para la práctica siguiente. Se han creado constantes para indicar cada uno de estos tipos: SOCKET_UDP, SOCKET_TCP y SOCKET_TCP_PASIVO. A cambio, getaddrinfo nos devuelve una lista de todas las direcciones que cumplen los requisitos indicados como parámetros, y un código de error. Esta lista hay que liberarla posteriormente con la función freeaddrinfo. Desde un punto de vista estricto habría que probar la conexión con cada una de las direcciones que nos devuelve hasta que una de ellas tenga éxito, pero para simplificar la práctica solo utilizaremos la primera dirección que nos devuelva y el resto solo las mostraremos por pantalla. Toda esta información se podrá usar luego para crear el socket. A continuación se muestra el listado de la función traduce_a_direccion. Busque información sobre las funciones getaddrinfo y freeaddrinfo. /* Convierte una direccion de Internet y un puerto de servicio (ambos cadena de caracteres) a valores numericos para poder ser utilizados en otras funciones, como bind y connect. La informacion tambien se imprimira por pantalla. Parametros de entrada: - maquina - cadena de caracteres con la direccion de Internet - puerto - cadena de caracteres con el puerto de servicio - tipo - SOCKET_UDP, SOCKET_TCP o SOCKET_TCP_PASIVO (escucha) Parametros de salida: - info - estructura addrinfo con el primer valor encontrado Devuelve: - Verdadero, si ha tenido exito. */ int traduce_a_direccion(const char *maquina, const char *puerto, int tipo, struct addrinfo *info) struct addrinfo hints; /* Estructura utilizada para afinar la Pág. 7

8 busqueda */ struct addrinfo *result, *rp; /*rp, variable usada para recorrer la lista de direcciones encontradas */ int error = 0; /* Obtiene las direcciones que coincidan con maquina/puerto */ /* Ponemos a 0 la estructura hints */ memset(&hints, 0, sizeof(struct addrinfo)); /*Inicializamos la estructura */ hints.ai_family = AF_INET; /* AF_UNSPEC Permite IPv4 o IPv6 AF_INET solo IPv4 */ if (SOCKET_UDP == tipo) hints.ai_socktype = SOCK_DGRAM; /* Socket de datagramas */ else hints.ai_socktype = SOCK_STREAM; /* Socket de flujo */ hints.ai_protocol = 0; /* Cualquier protocolo */ if (SOCKET_TCP_PASIVO == tipo) hints.ai_flags = AI_PASSIVE; /* Cualquier direccion IP */ /*Llamamos a la funcion de busqueda de nombres */ error = getaddrinfo(maquina, puerto, &hints, &result); if (error!= 0) //Mostramos informacion del error usando la funcion gai_strerror fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(error)); else /* getaddrinfo() devuelve una lista de estructuras addrinfo. Vamos a imprimirlas todas, aunque solo devolveremos la primera */ printf("resultado de la resolucion de nombre:\n"); for (rp = result; rp!= NULL; rp = rp->ai_next) printf("-> "); imprime_extremo_conexion(rp->ai_addr, rp->ai_addrlen, tipo); printf("\n"); if (result == NULL) /* No se ha devuelto ninguna direccion */ fprintf(stderr, "No se han encontrado direcciones.\n"); error = 1; //Hay error else //Copiamos solo los campos del primer resultado que interesan. info->ai_family = result->ai_family; info->ai_socktype = result->ai_socktype; info->ai_protocol = result->ai_protocol; *info->ai_addr = *result->ai_addr; //Copiamos contenido del //puntero info->ai_addrlen = result->ai_addrlen; freeaddrinfo(result); /* Liberamos los datos */ return!error; Listado 3. Función traduce_a_direccion del fichero traduccion.c Pág. 8

9 Uso de getnameinfo en imprime_extremo_conexion A veces querremos imprimir por pantalla información sobre la dirección de un socket. Para ellos vamos a utilizar la función imprime_extremo_conexion que a su vez hace uso de la función getnameinfo. A la función getnameinfo se le pasa el identificador de un socket (dirección IP y puerto), y nos rellena dos tablas de caracteres, una con información de la máquina y otra con información del puerto. Mediante opciones podemos indicarle si queremos esa información en formato numérico o como nombre de máquina o servicio. Como un mismo número de puerto puede corresponder a servicios distintos en UDP y TCP, es necesario indicar el tipo de socket que estamos usando. A continuación se muestra el listado de la función imprime_extremo_conexion. Busque información sobre la función getnameinfo. /* Funcion que imprime el nombre de la maquina asociada a una direccion de internet y el puerto de una conexion. Hace uso de la funcion getnameinfo. Parametros de entrada: - direccion - estructura sockaddr con informacion de un extremo del socket. - len - longitud de la estructura direccion - tipo - SOCKET_UDP o SOCKET_TCP Devuelve: - Nada */ void imprime_extremo_conexion(const struct sockaddr *direccion, socklen_t len, int tipo) char hbufnum[ni_maxhost]; //cadena de la maquina (numerico) char hbufnombre[ni_maxhost]; //cadena de la maquina (nombre) char sbuf[ni_maxserv]; //cadena del servicio int opciones = NI_NUMERICHOST NI_NUMERICSERV; //Opciones para getnameinfo int error = 0; if (tipo == SOCKET_UDP) opciones = NI_DGRAM; //Convertimos a cadena de caracteres error = getnameinfo(direccion, len, hbufnum, sizeof(hbufnum), sbuf, sizeof(sbuf), opciones); if (error == 0) //Obtenemos tambien el nombre asociado a esa direccion IP if (tipo == SOCKET_TCP_PASIVO) printf("escuchando en "); else if (getnameinfo(direccion, len, hbufnombre, sizeof(hbufnombre), NULL, 0, NI_NAMEREQD)) //Error obteniendo el nombre printf("maquina=(desconocida) "); else printf("maquina=%s ", hbufnombre); //Imprimimos valores numericos. printf("(%s), Puerto=%s", hbufnum, sbuf); if (tipo == SOCKET_UDP) Pág. 9

10 printf(" UDP"); else printf(" TCP"); else //Mostramos informacion del error usando la funcion gai_strerror fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(error)); Listado 4. Función imprime_extremo_conexion del fichero traduccion.c CLIENTE reco El cliente consta de tres funciones: recibido_en_plazo, error_fatal y main. /******************************************************************* * Cliente de eco remoto sobre UDP: * * reco dir_ip_maquina puerto mensaje... * * manda mensaje a maquina, quien responde un solo mensaje * que el cliente imprime. ********************************************************************/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <arpa/inet.h> #include "traduccion.h" #define TAMANO 1000 /* tamanio de tampones */ #define PLAZO 20 /* plazo de recepcion */ /* Función error_fatal */ /* Función recibido_en_plazo (ver listado 6.) */ /* Función main del cliente eco (ver listado 7.) */ Listado 5. Programa cliente de eco (reco.c) La función booleana recibido_en_plazo permite esperar a que llegue algo por un descriptor de E/S en un plazo máximo de segundos, pasado el cual abandona (resultado falso). Busque información sobre la función select, que se utiliza para realizar esta tarea. int recibido_en_plazo(int descriptor, int segundos) struct timeval plazo = segundos, 0 ; /* plazo de recepcion */ fd_set readfds; //Conjunto de descriptores a monitorizar FD_ZERO(&readfds); //Limpiamos fds FD_SET(descriptor, &readfds); //Insertamos descriptor en el conjunto return select(descriptor + 1, &readfds, (fd_set *) NULL, (fd_set *) NULL, &plazo)!= 0; Listado 6. Función recibido_en_plazo (reco.c) La función main abre un socket y manda los mensajes que se indican en los parámetros. int main(int argc, char *argv[]) char buf[tamano]; /* tampon de recepcion */ Pág. 10

11 int s; /* descriptor del socket */ struct addrinfo infoserv; /* informacion extremo remoto */ struct sockaddr dirserv; /* direccion internet remota */ struct sockaddr from; /* direccion internet remota auxiliar */ socklen_t len; /* tamanio de la estructura sockaddr_in */ int i, cc; int cod_error = 0; /* 0 no hay error, 1 hay error */ /* Comprueba que reco tiene cuatro argumentos (ver listado 8) */ /* Prepara nombre remoto y crea socket de UDP (ver listado 9) */ /* Envía mensajes y recibe respuesta (ver listado 10) */ /* Cierra socket (ver listado 11) */ return cod_error; Listado 7. Función main del cliente eco (reco.c) Los argumentos del cliente deben ser cuatro (incluido su nombre): if (argc < 4) fprintf(stderr, "Uso: reco <direccion> <puerto> <mensaje>...\n"); cod_error = 1; else /* resto de la funcion */ Listado 8. Comprueba que reco tiene cuatro argumentos (reco.c) El tipo de socket debe ser de datagramas de internet (UDP). El nombre remoto se obtiene haciendo uso de la funcion traduce_a_direccion antes vista. A esta función hay que pasarle una estructura addrinfo (previamente iniciada a 0 con memset) para que nos la rellene con la información encontrada. La información devuelta se utiliza para crear el socket. /* Ponemos a 0 la estructura infoserv */ memset(&infoserv, 0, sizeof(struct addrinfo)); infoserv.ai_addr = &dirserv; //aqui se guardara la direccion //obtenemos datos del extremo al que queremos llamar if (!traduce_a_direccion(argv[1], argv[2], SOCKET_UDP, &infoserv)) //error traduciendo cod_error = 1; else //no ha habido error if ((s = socket(infoserv.ai_family, infoserv.ai_socktype, infoserv.ai_protocol)) < 0) error_fatal("socket"); Listado 9. Prepara nombre remoto y crea socket de UDP (reco.c) Tras esta preparación se pueden enviar datagramas a la máquina remota a través del socket y esperar las respuestas. Siempre se comprueba el valor devuelto por la función para detectar posibles fallos. for (i = 3; i < argc; i++) /* envia */ cc = sendto(s, argv[i], strlen(argv[i]), 0, infoserv.ai_addr, infoserv.ai_addrlen); if (cc < 0) error_fatal("sendto"); len = 0; Pág. 11

12 /* espera */ if (recibido_en_plazo(s, PLAZO)) len = sizeof(from); /* recibe */ cc = recvfrom(s, buf, sizeof(buf) - 1, 0, &from, &len); if (cc < 0) error_fatal("recvfrom"); buf[cc] = '\0'; /* Para poder usarlo con printf */ printf("recibido: %s\n", buf); else printf("*** plazo terminado ***\n"); Listado 10. Envía mensajes y recibe respuesta (reco.c) Por último se cierra el socket abierto para liberar todos los recursos asociados a él en el sistema. Es importante que los sockets no se queden abiertos. Si el programa termina usando la función exit, ésta se encarga de cerrar todos los ficheros y sockets abiertos. if (close(s) < 0) /*Cerramos el socket */ error_fatal("close"); /* fin del else de comprobacion de argumentos */ Listado 11. Cierra socket (reco.c) SERVIDOR recod El servidor de eco prepara un socket en un puerto de UDP y se pone a esperar mensajes de un cliente a dicho puerto. A continuación mostraremos la estructura del servidor y aquellas partes que difieran de lo mostrado en la versión vista en el bloque1. /******************************************************************* * Servidor de eco remoto sobre UDP: * recod puerto * recibe mensajes de clientes por el puerto especificado, * los presenta en pantalla y responde un mensaje igual. * Termina si lleva mas de 20 segundos sin recibir nada ********************************************************************/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <arpa/inet.h> #include "traduccion.h" #define TAMANO 1000 /* tamanio de tampones */ #define PLAZO 20 /* plazo de recepcion */ /* Función error_fatal */ /* Función recibido_en_plazo (ver listado 6) */ int main(int argc, char *argv[]) char buf[tamano]; /* tampon de recepcion */ int s; /* descriptor del socket */ struct sockaddr_in iyo; /* direccion internet local */ struct sockaddr iclnt; /* direccion internet remota */ socklen_t len; /* longitud de la estructura sockaddr */ Pág. 12

13 int cc; /* numero de caracteres leidos o escritos */ int cod_error = 0; /* 0 no hay error, 1 hay error */ /* Comprueba que recod tiene dos argumentos (ver listado 13.) */ /* Crea socket de UDP */ /* Prepara nombre local en puerto fijo */ /* Asigna direccion local al socket */ /* Recibe mensajes y envía respuesta (ver listado 14.) */ /* Cierra socket */ return cod_error; Listado 12. Programa servidor de eco (recod.c) La comprobación de argumentos es similar a la de reco: if (argc!= 2) fprintf(stderr, "Uso: recod <puerto>\n"); cod_error = 1; else /* resto de la funcion main */ Listado 13. Comprueba que recod tiene dos argumentos (recod.c) En el servidor no vamos a utilizar la función traduce_a_direccion, ya que no necesita traducir nada (el puerto se le pasa en formato numérico). El servidor se queda esperando la recepción de mensajes en el puerto correspondiente y cuando llegan mensajes los reenvía tal cual. La espera se hace en un plazo prudencial, tras el cual el servidor termina. For (;;) /* El servidor solo finaliza cuando pasa el plazo sin recibir nada, por eso a partir de ahora no se usa la función error_fatal */ if (recibido_en_plazo(s, PLAZO)) /* Recibe y responde lo mismo (ver listado 15) */ else printf("*** no oigo nada ***\n"); break; /*Salimos del bucle */ Listado 14. Recibe mensajes y envía respuesta (recod.c) Los mensajes que recibe los devuelve al que los envió, uno a uno. len = sizeof(iclnt); /* recibe */ cc = recvfrom(s, buf, sizeof(buf) - 1, 0, (struct sockaddr *) &iclnt, &len); if (cc < 0) perror("recvfrom"); /*Ignoramos este mensaje y esperamos otro */ else /* inserta terminador para poder imprimir con printf */ buf[cc] = '\0'; /* convierte direccion del cliente usando Pág. 13

14 imprime_extremo_conexion */ printf("desde "); imprime_extremo_conexion((struct sockaddr *) &iclnt, len, SOCKET_UDP); printf(" recibido: %s\n", buf); /* envia */ cc = sendto(s, buf, strlen(buf), 0, (struct sockaddr *) &iclnt, len); if (cc < 0) perror("sendto"); /*Informamos del error */ Listado 15. Recibe y responde lo mismo (recod.c) PRUEBAS DEL BLOQUE 2 P1) Busque ayuda en el manual sobre las funciones utilizadas. (a) Qué devuelve la llamada a la función socket si se produce algún error en la ejecución? Cómo podemos comprobar cuál de los posibles errores se ha producido? (b) Cómo podemos saber el número de resultados obtenidos tras una llamada a getaddrinfo? (c) Una vez utilizados los valores obtenidos con getaddrinfo, qué debemos hacer con la información devuelta por dicha función? Por qué? P2)Compile el cliente y servidor usando el comando make. En la mayoría de las máquinas con UNIX (Linux) hay un servidor de eco permanentemente instalado en el puerto 7 (este servicio se llama echo, y no escribe en la pantalla del servidor ni termina nunca). En el laboratorio, la imagen de Linux está configurada así, busque un ordenador que esté ejecutando Linux y compruebe que el cliente puede comunicarse con él, con: reco diripomaquina echo hola P3)Pruebe ahora cliente y servidor en el mismo equipo. Para ello abra dos ventanas de terminal y ejecute un programa en cada una. Por qué el cliente no tiene que usar el mismo número de puerto que el servidor? Puede usar los siguientes comandos (un comando en cada terminal): recod 5000 reco localhost 5000 uno dos tres P4)Seguidamente póngase de acuerdo con un compañero para probar cliente y servidor entre ordenadores personales. Por supuesto, habrá que arrancar el servidor antes de efectuar la consulta especificando el número de puerto donde va a escuchar. Intente también que varios clientes se comuniquen simultáneamente con un mismo servidor. Capture con el analizador de protocolos Wireshark una comunicación entre dos equipos (uno de ellos el suyo) y observe los datagramas UDP transmitidos. coinciden con lo esperable?. P5) Pruebe a generar errores y anote los resultados: Pág. 14

15 (a) Utilizando direcciones IP inexistentes o donde no exista ningún servidor a la escucha. (b) Indicando una dirección IP incorrecta. (c) Ejecutando dos servidores en el mismo puerto. P6. OPCIONAL) Una duda que suele surgir a menudo es qué es lo que pasa si al recibir un datagrama con la función recvfrom, el buffer pasado a la función es más pequeño que el datagrama. Cambie la constante que define el tamaño del buffer de recepción del cliente a un valor pequeño, de tal manera que pueda escribir una palabra que no quepa en él. Llame al fichero modificado reco6.c. Ejecute el nuevo cliente. ocurre? P7. OPCIONAL) Modifique el código del cliente para que este también utilice la función bind. Qué conseguimos con esto? Llame al fichero modificado reco7.c. P8. OPCIONAL) Aunque el protocolo UDP no está orientado a conexión, en la ayuda de la función connect se dice que esta función puede utilizarse con dicho protocolo. Qué efecto tendría? Modifique el código del cliente para que haga uso de la función connect y llame al fichero modificado reco8.c. El funcionamiento debe seguir siendo el mismo. FICHEROS A ENTREGAR Memoria de la práctica. (documento de texto con las respuestas y resultados de las pruebas) Ficheros modificados en esta práctica de las pruebas opcional es P6, P7 y P8. (en caso de haber realizado la parte opcional) Para subir a la tarea más de un fichero puede comprimir y empaquetar (con rar o zip) los ficheros a entregar. Pág. 15

Problemas de Redes de Computadores. Conjunto de problemas 1

Problemas de Redes de Computadores. Conjunto de problemas 1 Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1 Pregunta 1.1: Si configuro mi servidor Web para que no acepte conexiones desde la dirección IP 130.206.1.1,

Más detalles

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

Introducción a la programación con sockets en C Introducción a la programación con sockets en C Enrique Bonet Departamento de Informática Universidad de Valencia Índice Introducción Socket Creación de un socket Cierre de un socket Asociación de un socket

Más detalles

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

sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM) s s Comunicación punto-a-punto entre procesos Los s son los extremos de la comunicación Diferentes dominios UNIX: Entre procesos de un mismo equipo Internet: Entre procesos de diferentes equipos (TCP/IP)

Más detalles

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

Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1 Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1 Preguntas cortas Pregunta 1.1: Si configuro mi servidor Web para que no acepte conexiones desde

Más detalles

COMUNICACIÓN ENTRE PROCESOS SOCKETS

COMUNICACIÓN ENTRE PROCESOS SOCKETS COMUNICACIÓN ENTRE PROCESOS SOCKETS Diseño de Sistemas Operativos Curso 2007/08 Grupo: Mi30 Martín Santana, A. David Martínez Santana, Luis Ignacio Qué son?(definición) n) Los sockets son mecanismos de

Más detalles

Estructuras y funciones de programación de sockets.

Estructuras y funciones de programación de sockets. Estructuras y funciones de programación de sockets. Introducción. En estos apuntes se incluye una breve descripción de las estructuras y funciones cuyo uso puede ser necesario para el desarrollo de las

Más detalles

Práctica 3 de Redes de Área Local Cliente y Servidor de ficheros concurrente

Práctica 3 de Redes de Área Local Cliente y Servidor de ficheros concurrente Práctica 3 de Redes de Área Local Cliente y Servidor de ficheros concurrente 3 o curso de Ingeniería Técnica en Informática de Sistemas 13 de abril de 2007 El objetivo de esta práctica es realizar una

Más detalles

Práctica GESTIÓN Y UTILIZACIÓN DE REDES LOCALES. Curso 2001/2002. TCP/IP: protocolo TCP

Práctica GESTIÓN Y UTILIZACIÓN DE REDES LOCALES. Curso 2001/2002. TCP/IP: protocolo TCP Práctica 9 GESTIÓN Y UTILIZACIÓN DE REDES LOCALES Curso 2001/2002 TCP/IP: protocolo TCP Introducción Como se ha comentado en la práctica anterior, el protocolo UDP es muy sencillo de implementar, pero

Más detalles

ARQUITECTURA DE REDES Laboratorio

ARQUITECTURA DE REDES Laboratorio 1nsloo.cl ARQUITECTURA DE REDES Laboratorio Práctica 2: Ejercicios de aplicación de Sockets en C 1. OBJETIVOS. El objetivo de esta práctica es que el alumno llegue a conocer los principales conceptos relacionados

Más detalles

Introducción de Sockets en C.

Introducción de Sockets en C. PRÁCTICA 2: Introducción de Sockets en C. 1 La Interfaz Socket es una API para redes TCP/IP que se compone de funciones o rutinas. Originalmente se construyó a principios de los 80 para el sistema operativo

Más detalles

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

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

Más detalles

Mecanismos IPC: sockets

Mecanismos IPC: sockets Mecanismos IPC: sockets Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Sockets Los sockets son una abstracción lógica que permiten la comunicación bidireccional

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

Redes (IS20) Ingeniería Técnica en Informática de Sistemas. http://www.icc.uji.es. CAPÍTULO 8: El nivel de transporte en Internet

Redes (IS20) Ingeniería Técnica en Informática de Sistemas. http://www.icc.uji.es. CAPÍTULO 8: El nivel de transporte en Internet Redes (IS20) Ingeniería Técnica en Informática de Sistemas http://www.icc.uji.es CAPÍTULO 8: El nivel de transporte en Internet ÍNDICE 1. Introducción Curso 2002-2003 - Redes (IS20) -Capítulo 8 1 1. Introducción

Más detalles

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Uso de Ficheros Todas las estructuras de datos vistas hasta ahora utilizan la

Más detalles

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET 1 EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET La familia de protocolos TCP/IP fue diseñada para permitir la interconexión entre distintas redes. El mejor ejemplo es Internet: se trata

Más detalles

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007 MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007 Servicio de Informática y Comunicaciones Para poder diseñar un formulario y que éste nos envíe los resultados a nuestro correo electrónico, necesitamos

Más detalles

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

Sockets (TCP) Tema 2.- Nivel de aplicación en Internet Sockets (TCP) Tema 2- Nivel de aplicación en Internet Dr Daniel Morató es de Computadores Ingeniero Técnico en Informática de Gestión, 2º curso Material parcialmente adaptado del libro Computer Networking:

Más detalles

Práctica 1: sockets en Python

Práctica 1: sockets en Python Práctica 1: sockets en Python Álvaro Navarro anavarro@gsyc.es Jesús M. González-Barahona jgb@gsyc.es Infraestructura de Redes 5 o Ingeniería Informática 08/09 1. Fase 1: Cliente UDP Esta primera fase tiene

Más detalles

Tutorial BMS Server Studio UDP

Tutorial BMS Server Studio UDP Tutorial BMS Server Studio UDP ÍNDICE Página 0. Introducción...3 1. Configuración del puerto UDP...4 2. Ejemplos...6 2.1 Configuración manual...6 2.1.1 Configuración SocketTest...6 2.1.2 Configuración

Más detalles

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA Autor: Carlos Javier Martín González. Licenciado en Física Teórica por la Universidad Autónoma de Madrid. Analista programador y funcional. Desarrollador

Más detalles

Migrando aplicaciones a IPv6

Migrando aplicaciones a IPv6 Migrando aplicaciones a Fundamentos técnico: DualStack y Socket.h Alonso Sandoval A. Hernán Vargas L. Universidad Técnica Federico Santa María asandova@alumnos.inf.utfsm.cl, hvargas@alumnos.inf.utfsm.cl

Más detalles

Tema 4.1: - TRANSPORTE-

Tema 4.1: - TRANSPORTE- Tema 4.1: - TRANSPORTE- -Introducción - Terminología OSI - Tipologia y complejidad - Servicios - Calidad de servicio - Conexiones de transporte - Transporte en Internet - Introducción. Su función básica

Más detalles

TELEPROCESO Y SISTEMAS DISTRIBUIDOS

TELEPROCESO Y SISTEMAS DISTRIBUIDOS Universidad Nacional del Nordeste TELEPROCESO Y SISTEMAS DISTRIBUIDOS La Interfaz Socket Lic. Vanesa S. Roffé Año 2009 Introducción - Origen de la INTERFAZ SOCKET La Interfaz Socket es una API para redes

Más detalles

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

Sockets (UDP) Tema 2.- Nivel de aplicación en Internet Sockets (UDP) Tema 2.- Nivel de aplicación en Internet Dr. Daniel Morató es de Computadores Ingeniero Técnico en Informática de Gestión, 2º curso Sockets y UDP UDP: no hay conexión entre cliente y servidor»

Más detalles

Práctica 3: Estudio de los protocolos HTTP, SMTP, POP3 e IMAP mediante un analizador de red: Wireshark

Práctica 3: Estudio de los protocolos HTTP, SMTP, POP3 e IMAP mediante un analizador de red: Wireshark FUNDAMENTOS DE REDES DE COMPUTADORES Curso 2009/2010 Práctica 3: Estudio de los protocolos HTTP, SMTP, POP3 e IMAP mediante un analizador de red: Wireshark Introducción En esta práctica vamos a trabajar

Más detalles

Activación de un Escritorio Remoto

Activación de un Escritorio Remoto Activación de un Escritorio Remoto La activación de un Escritorio Remoto se realiza en dos fases, en la primera se habilita a un Usuario de un ordenador para que pueda admitir una conexión remota, la segunda

Más detalles

3.1 Introducción a Wireshark

3.1 Introducción a Wireshark 3.1 Introducción a Wireshark Una herramienta básica para observar los mensajes intercambiados entre aplicaciones es un analizador de protocolos (packet sniffer). Un analizador de protocolos es un elemento

Más detalles

Iptables, herramienta para controlar el tráfico de un servidor

Iptables, herramienta para controlar el tráfico de un servidor Iptables, herramienta para controlar el tráfico de un servidor La seguridad es punto muy importante a tener en cuenta en cualquier organización de ahí que sea fundamental hacer uso de aquellos mecanismos

Más detalles

7. Manejo de Archivos en C.

7. Manejo de Archivos en C. 7. Manejo de Archivos en C. Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos se almacenan normalmente en un dispositivo de

Más detalles

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por

Más detalles

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS Servicio DNS - 1 - Servicio DNS...- 3 - Definición... - 3 - Instalación... - 5 - Configuración del Servidor DNS...- 10 - - 2 - Servicio DNS Definición

Más detalles

INTERNET 4º ESO INFORMATICA / DEP. TECNOLOGIA

INTERNET 4º ESO INFORMATICA / DEP. TECNOLOGIA INTERNET 4º ESO INFORMATICA / DEP. TECNOLOGIA INTERNET Es una red mundial descentralizada, constituida por ordenadores que se conectan mediante un protocolo especial de comunicación, Internet Protocolo

Más detalles

ZCARTAS: Iniciación a la suma y resta de números enteros... 4. Introducción... 4. Actividad 1: Escenario con cartas numeradas desde -2 hasta 2...

ZCARTAS: Iniciación a la suma y resta de números enteros... 4. Introducción... 4. Actividad 1: Escenario con cartas numeradas desde -2 hasta 2... CONTENIDO ZCARTAS: Iniciación a la suma y resta de números enteros... 4 Introducción... 4 Actividad 1: Escenario con cartas numeradas desde -2 hasta 2... 4 Contenidos trabajados... 4 Instrucciones de Scratch...

Más detalles

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada.

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada. Arquitectura de sistemas Abelardo Pardo University of Sydney School of Electrical and Information Engineering NSW, 2006, Australia Autor principal del curso de 2009 a 2012 Iria Estévez Ayres Damaris Fuentes

Más detalles

WINDOWS 2008 5: TERMINAL SERVER

WINDOWS 2008 5: TERMINAL SERVER WINDOWS 2008 5: TERMINAL SERVER 1.- INTRODUCCION: Terminal Server proporciona una interfaz de usuario gráfica de Windows a equipos remotos a través de conexiones en una red local o a través de Internet.

Más detalles

Práctica 3ProgramacionRS232: Programación básica de la RS232

Práctica 3ProgramacionRS232: Programación básica de la RS232 Práctica 3ProgramacionRS232: Programación básica de la RS232 1 Objetivos El objetivo de esta práctica es la iniciación del alumno en la programación de las comunicaciones en un entorno de desarrollo basado

Más detalles

Instalación y mantenimiento de servicios de Internet. U.T.3.- Servicio DNS

Instalación y mantenimiento de servicios de Internet. U.T.3.- Servicio DNS Instalación y mantenimiento de servicios de Internet U.T.3.- Servicio DNS 1 Qué es el servicio DNS? A los usuarios de Internet les resulta complicado trabajar con direcciones IP, sobre todo porque son

Más detalles

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...

Más detalles

En caso de que el cliente nunca haya obtenido una concesión de licencia de un servidor DHCP:

En caso de que el cliente nunca haya obtenido una concesión de licencia de un servidor DHCP: Servidor DHCP El protocolo de configuración dinámica de host (DHCP, Dynamic Host Configuration Protocol) es un estándar TCP/IP diseñado para simplificar la administración de la configuración IP de los

Más detalles

Gracias a ese IP único que tiene cada ordenador conectado a la red de internet se pueden identificar y comunicar los ordenadores.

Gracias a ese IP único que tiene cada ordenador conectado a la red de internet se pueden identificar y comunicar los ordenadores. COMO FUNCIONA INTERNET Internet es una gran red de ordenadores a nivel mundial, que pueden intercambiar información entre ellos. Se pueden comunicar porque están unidos a través de conexiones telefónicas,

Más detalles

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS En este manual aprenderemos a introducir un Ticket de Soporte (Incidencia Informática) y ver todo el proceso hasta que se resuelve. Para poder escribir Tickets

Más detalles

Asignatura: Laboratorio de Computadores. Curso 2007-08. 5º Semestre, 3er. Curso. Ingeniería Informática. Práctica de SOCKETS

Asignatura: Laboratorio de Computadores. Curso 2007-08. 5º Semestre, 3er. Curso. Ingeniería Informática. Práctica de SOCKETS Asignatura: Laboratorio de Computadores. Curso 2007-08. 5º Semestre, 3er. Curso. Ingeniería Informática. Práctica de SOCKETS Especificación de la práctica: Un protocolo sencillo para transferencia de ficheros

Más detalles

VideoSoftPHONE Active Contact

VideoSoftPHONE Active Contact VideoSoftPHONE Active Contact 1 ÍNDICE 1. CÓMO INSTALAR MI VIDEOSOFTPHONE SOFTWARE?... 1 1.1. REQUISITOS PREVIOS... 1 1.1.1. Requisitos del sistema... 1 1.1.2. Requisitos Software... 1 1.2. INSTALACIÓN...

Más detalles

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */ Principios de Programación El lenguaje C 1. Variables locales y globales 1.1. Variables locales Las funciones permiten al programador modularizar un programa. Todas las variables declaradas en las definiciones

Más detalles

Sitios remotos. Configurar un Sitio Remoto

Sitios remotos. Configurar un Sitio Remoto Sitios remotos Definir un sitio remoto significa establecer una configuración de modo que Dreamweaver sea capaz de comunicarse directamente con un servidor en Internet (por eso se llama remoto) y así poder

Más detalles

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico Acceso al correo electrónico Pasamos ahora a lo que sería usar la cuenta de correo que nos hicimos en la clase anterior. Lo primero que hacemos es entrar en la página web de Yahoo y localizar el icono

Más detalles

Computadores y Comunicaciones. Práctica de Laboratorio: Diseño de una aplicación basada en el modelo cliente-servidor

Computadores y Comunicaciones. Práctica de Laboratorio: Diseño de una aplicación basada en el modelo cliente-servidor Práctica de Laboratorio: Diseño de una aplicación basada en el modelo cliente-servidor Julián Viejo Cortés Jorge Juan Chico Marzo 2009 Índice de contenidos 1. Introducción...2 2. Ejemplo 1: Aplicación

Más detalles

CÓMO CONFIGURAR DHCP EN SUSE LINUX

CÓMO CONFIGURAR DHCP EN SUSE LINUX CÓMO CONFIGURAR DHCP EN SUSE LINUX Pedro Manuel Lemus Sánchez Profesor de Informática en el IES Suárez de Figueroa En ocasiones cuando oímos hablar de un Sistema Operativo (S.O.) de libre distribución,

Más detalles

Correo Electrónico: Webmail: Horde 3.1.1

Correo Electrónico: Webmail: Horde 3.1.1 CONTENIDOS: PAGINA Qué es Webmail?. 2 Acceder a Webmail. 2 Instilación del Certificado UCO. 4 Instilación Certificado I.explorer. 4 Instilación Certificado Firefox. 7 Opciones Webmail. 8 Opciones Información

Más detalles

SOLUCION EXAMEN junio 2006

SOLUCION EXAMEN junio 2006 SOLUCION EXAMEN junio 2006 1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas: I) (1 p) En UNIX únicamente se distinguen dos tipos de procesos: los procesos de usuario y los

Más detalles

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

Ejercicio 1 (2 puntos. Tiempo: 25 minutos) Fecha de publicación de notas: jueves 18 de Julio. Fecha de revisión: viernes 19 de Julio a las 10:00h. Despacho C-209. Ejercicio 1 (2 puntos. Tiempo: 25 minutos) Se desea desarrollar un programa en C

Más detalles

MANUAL DE AYUDA MODULO TALLAS Y COLORES

MANUAL DE AYUDA MODULO TALLAS Y COLORES MANUAL DE AYUDA MODULO TALLAS Y COLORES Fecha última revisión: Enero 2010 Índice TALLAS Y COLORES... 3 1. Introducción... 3 CONFIGURACIÓN PARÁMETROS TC (Tallas y Colores)... 3 2. Módulos Visibles... 3

Más detalles

Guía de Instalación para clientes de WebAdmin

Guía de Instalación para clientes de WebAdmin Panda Managed Office Protection Guía de Instalación para clientes de WebAdmin Tabla de contenidos 1. Introducción... 4 2. Instalación de Panda Managed Office Protection a partir de una instalación de Panda

Más detalles

Anexo B. Comunicaciones entre mc y PC

Anexo B. Comunicaciones entre mc y PC Anexo B Comunicaciones entre mc y PC En este apartado se hará hincapié en los comandos para el manejo del módulo de comunicaciones desde el PC. Conociendo estos comando se podrá realizar una aplicación

Más detalles

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos

Más detalles

Esquema de un programa en C: bloques básicos

Esquema de un programa en C: bloques básicos Esquema de un programa en C: bloques básicos // Incluimos los ficheros de cabecera que necesitemos. // Esto es un comentario #include #include // Si queremos definir alguna constante,

Más detalles

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET 1 EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET Cada capa de la pila añade a los datos a enviar a la capa inferior, información de control para que el envío sea correcto. Esta información

Más detalles

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L.

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L. Manual de Usuario Programa diseñado y creado por Contenido 1. Acceso al programa... 3 2. Opciones del programa... 3 3. Inicio... 4 4. Empresa... 4 4.2. Impuestos... 5 4.3. Series de facturación... 5 4.4.

Más detalles

Manual de rol gestor de GAV para moodle 2.5

Manual de rol gestor de GAV para moodle 2.5 Manual de rol gestor de GAV para moodle 2.5 Consultas LDAP-GAUR... 2 Buscar en LDAP datos de un usuario... 2 Docentes... 3 Buscar en GAUR datos de un docente... 3 Buscar en GAUR la docencia de un docente

Más detalles

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO 1.- Objetivos del laboratorio Diseño de clases en C++ Comprensión y uso del TAD Árbol Binario de Búsqueda

Más detalles

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Máquina Expendedora (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Circulo (1.0 pto.)... 3 1.3 Ejercicio

Más detalles

LiLa Portal Guía para profesores

LiLa Portal Guía para profesores Library of Labs Lecturer s Guide LiLa Portal Guía para profesores Se espera que los profesores se encarguen de gestionar el aprendizaje de los alumnos, por lo que su objetivo es seleccionar de la lista

Más detalles

Servidor DNS. DNSmasq. Rocío Alt. Abreu Ortiz 2009-3393

Servidor DNS. DNSmasq. Rocío Alt. Abreu Ortiz 2009-3393 Rocío Alt. Abreu Ortiz 2009-3393 Servidor DNS Un servidor DNS (Domain Name System) en español sistema de nombres de dominio se utiliza para proveer a las computadoras de los usuarios (clientes) un nombre

Más detalles

Acronis License Server. Guía del usuario

Acronis License Server. Guía del usuario Acronis License Server Guía del usuario TABLA DE CONTENIDO 1. INTRODUCCIÓN... 3 1.1 Generalidades... 3 1.2 Política de licencias... 3 2. SISTEMAS OPERATIVOS COMPATIBLES... 4 3. INSTALACIÓN DE ACRONIS LICENSE

Más detalles

INFORMÁTICA IE. Términos a conocer y conceptos básicos. World Wide Web (WWW):

INFORMÁTICA IE. Términos a conocer y conceptos básicos. World Wide Web (WWW): INFORMÁTICA IE MÓDULO INTERNET Términos a conocer y conceptos básicos World Wide Web (WWW): Digamos, simplemente, que es un sistema de información, el sistema de información propio de Internet. Sus características

Más detalles

GUIA DE USUARIO. CONFIGURACION CORREO ELECTRONICO

GUIA DE USUARIO. CONFIGURACION CORREO ELECTRONICO versiongalega.com - Departamento de Atención al cliente GUIA DE USUARIO. CONFIGURACION CORREO ELECTRONICO En este documento encontrará una descripción de cómo configurar sus cuentas de correo electrónico

Más detalles

MANUAL DE AYUDA MÓDULOS 2011 MACOS

MANUAL DE AYUDA MÓDULOS 2011 MACOS MANUAL DE AYUDA MÓDULOS 2011 MACOS Agencia Tributaria Centro de Atención Telefónica Departamento de INFORMÁTICA TRIBUTARIA ÍNDICE MÓDULOS 2011 INTRODUCCIÓN...3 Requisitos previos. Máquina Virtual de Java...

Más detalles

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie.

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie. Adaptación al NPGC Introducción Nexus 620, ya recoge el Nuevo Plan General Contable, que entrará en vigor el 1 de Enero de 2008. Este documento mostrará que debemos hacer a partir de esa fecha, según nuestra

Más detalles

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT Versión 1. Mayo de 2001 Luis Vinuesa Martínez. Departamento de Informática Universidad de Oviedo vinuesa@correo.uniovi.es www.di.uniovi.es/~vinuesa ÍNDICE. Introducción...

Más detalles

Instalar y configurar W3 Total Cache

Instalar y configurar W3 Total Cache Instalar y configurar W3 Total Cache en WordPress Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com La velocidad de carga de una web influye mucho a la hora de mejorar el

Más detalles

MANUAL DE USUARIO Mensa-Red Empresas (OUTLOOK 2002, 2003 y XP)

MANUAL DE USUARIO Mensa-Red Empresas (OUTLOOK 2002, 2003 y XP) Bienvenido a la ayuda de Mensa-Red Empresas edición e-mail Vodafone. Pulse sobre las distintas opciones para resolver sus dudas. i.conectar (autenticación) ii.envío de mensajes iii.recepción de mensajes

Más detalles

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN Los protocolos de capa de aplicación de TCP/IP más conocidos son aquellos que proporcionan intercambio de la información

Más detalles

5. Composer: Publicar sus páginas en la web

5. Composer: Publicar sus páginas en la web 5. Composer: Publicar sus páginas en la web Si nuestras páginas existen únicamente en el disco duro local, sólo nosotros podremos navegar por ellas, pero nadie más podrá hacerlo. Composer nos permite publicarlas

Más detalles

4.2- Instalación y Configuración de un Servidor DNS Dnsmasq en Ubuntu sin DHCP

4.2- Instalación y Configuración de un Servidor DNS Dnsmasq en Ubuntu sin DHCP 4.2- Instalación y Configuración de un Servidor DNS Dnsmasq en Ubuntu sin DHCP Dnsmasq es un paquete que incluye un servidor DNS y DHCP. El servidor DNS es un servidor muy sencillo que no contiene zonas

Más detalles

TEMA 4: EMPEZANDO A NAVEGAR ESCUELA UNIVERSITARIA DE INFORMÁTICA. Raúl Martín Martín

TEMA 4: EMPEZANDO A NAVEGAR ESCUELA UNIVERSITARIA DE INFORMÁTICA. Raúl Martín Martín TEMA 4: EMPEZANDO A ESCUELA UNIVERSITARIA DE INFORMÁTICA NAVEGAR Raúl Martín Martín SERVICIOS DE INTERNET SERVICIOS DE INTERNET Las posibilidades que ofrece Internet se denominan servicios. Hoy en día,

Más detalles

(decimal) 128.10.2.30 (hexadecimal) 80.0A.02.1E (binario) 10000000.00001010.00000010.00011110

(decimal) 128.10.2.30 (hexadecimal) 80.0A.02.1E (binario) 10000000.00001010.00000010.00011110 REDES Internet no es un nuevo tipo de red física, sino un conjunto de tecnologías que permiten interconectar redes muy distintas entre sí. Internet no es dependiente de la máquina ni del sistema operativo

Más detalles

Programación con Sockets

Programación con Sockets Programación con Sockets INTRODUCCIÓN 1 Qué son los Sockets? Son un mecanismo de comunicación entre procesos: Dentro de una misma máquina. Distribuidos en diferentes máquinas. Que pueden ser identificados

Más detalles

Redes de área local: Aplicaciones y servicios WINDOWS

Redes de área local: Aplicaciones y servicios WINDOWS Redes de área local: Aplicaciones y servicios WINDOWS 4. Servidor DNS 1 Índice Definición de Servidor DNS... 3 Instalación del Servidor DNS... 5 Configuración del Servidor DNS... 8 2 Definición de Servidor

Más detalles

Aplicaciones Cliente/Servidor en Gambas Prof: Mileti, P.

Aplicaciones Cliente/Servidor en Gambas Prof: Mileti, P. Aplicaciones Cliente/Servidor en Gambas Prof: Mileti, P. Al igual que un usuario se comunica con el programa por medio del teclado, dos programas se pueden comunicar entre sí por medio Sockets. Se podría

Más detalles

Redes Locales: El protocolo TCP/IP

Redes Locales: El protocolo TCP/IP Redes Locales: El protocolo TCP/IP Los protocolos de red son las reglas que siguen los equipos conectados a la red para poder comunicarse entre sí, y hablar así el mismo idioma. El grupo de protocolos

Más detalles

Introducción a PHP. * No es necesario declarar previamente las variables.

Introducción a PHP. * No es necesario declarar previamente las variables. Introducción a PHP La programación de sitios web cada día está más orientada al desarrollo de páginas dinámicas y aplicaciones, o sea sitios donde el usuario pueda interactuar con la web. Dentro de los

Más detalles

Tema 4. Gestión de entrada/salida

Tema 4. Gestión de entrada/salida Tema 4. Gestión de entrada/salida 1. Principios de la gestión de E/S. 1.Problemática de los dispositivos de E/S. 2.Objetivos generales del software de E/S. 3.Principios hardware de E/S. 1. E/S controlada

Más detalles

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación Vicerrectorado de Tecnologías de la Información y la Comunicación Conexión mediante Escritorio Remoto de Windows Última Actualización 16 de septiembre de 2013 Histórico de cambios Fecha Descripción Autor

Más detalles

Solución de actividad 2.2.5: Uso de NeoTrace para ver Internetworks

Solución de actividad 2.2.5: Uso de NeoTrace para ver Internetworks Solución de actividad 2.2.5: Uso de NeoTrace para ver Internetworks Objetivos de aprendizaje Explicar el uso de programas de rastreo de rutas, como tracert y NeoTrace. Usar tracert y NeoTrace para rastrear

Más detalles

Direcciones IP IMPLANTACIÓN DE SISTEMAS OPERATIVOS 1º ASIR. En redes IPv4.

Direcciones IP IMPLANTACIÓN DE SISTEMAS OPERATIVOS 1º ASIR. En redes IPv4. Direcciones IP En redes IPv4. IMPLANTACIÓN DE SISTEMAS OPERATIVOS Cada ordenador en Internet dispone de una dirección IP única de 32 bits. Estos 32 bits,o 4 bytes, se representan normalmente como se muestra

Más detalles

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD Manual de usuario 1 - ÍNDICE 1 - ÍNDICE... 2 2 - INTRODUCCIÓN... 3 3 - SELECCIÓN CARPETA TRABAJO... 4 3.1 CÓMO CAMBIAR DE EMPRESA O DE CARPETA DE TRABAJO?...

Más detalles

COMO FUNCIONA INTERNET

COMO FUNCIONA INTERNET COMO FUNCIONA INTERNET Fuente: http://www.areatecnologia.com/informatica/como-funciona-internet.html Vamos a explicar los conceptos básicos de Internet que todo el mundo debería conocer. Internet es una

Más detalles

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX En este manual se presenta el proceso de configuración de una Maquina Virtual en VirtualBox, que será utilizada para instalar un Servidor

Más detalles

Apéndice 5 Manual de usuario de ColeXión. ColeXión 1.0. Manual de usuario

Apéndice 5 Manual de usuario de ColeXión. ColeXión 1.0. Manual de usuario Apéndice 5 Manual de usuario de ColeXión ColeXión 1.0 Manual de usuario Índice 1. Qué es ColeXión?... 2 2. Requerimientos del sistema... 3 3. Instalación de ColeXión... 3 4. Creación de un nuevo esquema...

Más detalles

Comisión Nacional de Bancos y Seguros

Comisión Nacional de Bancos y Seguros Comisión Nacional de Bancos y Seguros Manual de Usuario Capturador de Pólizas División de Servicios a Instituciones Financieras Mayo de 2011 2 Contenido 1. Presentación... 3 1.1 Objetivo... 3 2. Descarga

Más detalles

El lenguaje de Programación C. Fernando J. Pereda <ferdy@gentoo.org>

El lenguaje de Programación C. Fernando J. Pereda <ferdy@gentoo.org> El lenguaje de Programación C Fernando J. Pereda Por qué aprender C? Portable y muy extendido Estándar (C89, C99) El lenguaje de los sistemas Un lenguaje fácil (no, no es broma) Por

Más detalles

MANUAL DE ACTUALIZACIÓN DEL DEA. Versión del DEA del 10/04/2012

MANUAL DE ACTUALIZACIÓN DEL DEA. Versión del DEA del 10/04/2012 DEL DEA Versión del DEA del VERSIÓN DE MANUAL ACTUALIZACIÓN: 2.50 FECHA: Página 1 de 13 ÍNDICE 1 INSTALACIÓN...3 1.1 SI YA SE TIENE INSTALADA UNA VERSIÓN DEL DEA...3 1.2 SI SE TIENE INSTALADA LA VERSIÓN

Más detalles

Boot Camp Manual de instalación y configuración

Boot Camp Manual de instalación y configuración Boot Camp Manual de instalación y configuración Contenido 3 Introducción 3 Requisitos 4 Visión general de la instalación 4 Paso 1: Comprobar si hay actualizaciones disponibles 4 Paso 2: Preparar el Mac

Más detalles

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES Tema: Cartas de Servicios Primera versión: 2008 Datos de contacto: Evaluación y Calidad. Gobierno de Navarra. evaluacionycalidad@navarra.es

Más detalles

Laboratorio 2 Introducción al DNS (Domain Name System)

Laboratorio 2 Introducción al DNS (Domain Name System) Redes de Datos - Laboratorio - Informe Laboratorio 2 Introducción al DNS (Domain Name System) Fecha: Puesto de trabajo: Procedimiento Comandos Unix 1. Escriba cómo utilizar el comando ifconfig para obtener

Más detalles

MANUAL TRAMITACIÓN PROCEDIMIENTO

MANUAL TRAMITACIÓN PROCEDIMIENTO MANUAL TRAMITACIÓN PROCEDIMIENTO GESTIÓN ACADÉMICA: EXPEDICIÓN DE CERTIFICACIONES ACADÉMICAS Índice 1.- Introducción...3 2.- Esquema de tramitación...4 3.- Tramitación...5 Paso 1. Acceder al Escritorio

Más detalles

PRACTICA 9 SERVIDOR WEB APACHE SERVIDOR WEB APACHE. JEAN CARLOS FAMILIA Página 1

PRACTICA 9 SERVIDOR WEB APACHE SERVIDOR WEB APACHE. JEAN CARLOS FAMILIA Página 1 SERVIDOR WEB APACHE JEAN CARLOS FAMILIA Página 1 El servidor HTTP Apache es un servidor web HTTP de código abierto para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que

Más detalles