ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Programacion Con Sokets


Enviado por   •  27 de Marzo de 2015  •  1.441 Palabras (6 Páginas)  •  261 Visitas

Página 1 de 6

UNIVERSIDAD ANDINA DEL CUSCO

TECNOLOGIAS DE COMUNICACION

GUIA DE LABORATORIO

ECP 1 de 12

I. PROGRAMACION CON SOCKETS UDP

II. OBJETIVOS

Al finalizar la presente práctica el estudiante:

1. Comprende y explica la comunicación mediante sockets UDP tanto en plataformas Windows como Linux

2. Escribe aplicaciones de red que utilizan sockets UDP para comunicarse entre sí.

3. Escribe aplicaciones de red, que permiten la comunicación en plataformas heterogéneas Windows y Linux.

4. Verifica las comunicaciones de red mediante herramientas de monitoreo.

III. MATERIALES Y EQUIPOS.

Los materiales que utilizaremos en los trabajos de laboratorio son:

1. Computador con sistema operativo Linux y compilador para el lenguaje de programación C.

2. Computador con sistema operativo Windows y compilador para el lenguaje de programación C.

3. Manuales de programación en C para Linux y Windows.

4. Manuales de programación con sockets en Linux y Windows.

5. Herramienta de monitoreo Wireshark para Linux y Windows.

IV. PRE-REQUISITOS

Para mejores resultados, es recomendable que, previamente, el estudiante:

1. Tenga conocimientos de programación con el lenguaje de programación C para Linux

2. Tenga conocimientos de programación con el lenguaje de programación C para Windows

3. Conozca la teoría de los protocolos de comunicación TCP y UDP.

UNIVERSIDAD ANDINA DEL CUSCO

TECNOLOGIAS DE COMUNICACION

GUIA DE LABORATORIO

ECP 2 de 12

V. MARCO TEORICO

SOCKETS UDP

La comunicación mediante sockets UDP resulta más simple que aquella que utiliza sockets TCP, debido a que UDP es un protocolo de “mejor esfuerzo” y sin estado (es decir, no requiere mantener variables asociadas a una conexión), en tanto que TCP debe mantener variables que le permitan mantener los parámetros de una conexión, así como los recursos asignados a la misma, pues debe ofrecer un servicio orientado a la conexión y fiable a las aplicaciones.

Una descripción más amplia sobre las características de la programación mediante sockets UDP y TCP puede obtenerse en los textos de la referencia bibliográfica.

WINSOCK

Winsock, la implementación de sockets en Windows, así como la creación de programas de red para esta plataforma puede estudiarse del sitio web de Microsoft, referenciado en la bibliografía.

SOFTWARE DE MONITOREO

Mayor información sobre Wireshark, asi como su uso, puede obtenerse en los sitios web www.wireshark.org y http://www.wireshark.org/docs/.

UNIVERSIDAD ANDINA DEL CUSCO

TECNOLOGIAS DE COMUNICACION

GUIA DE LABORATORIO

ECP 3 de 12

VI. PRACTICAS DE LABORATORIO.

1. Escribir una aplicación Cliente/Servidor, en la que el cliente envía un mensaje al servidor y este responde con una confirmación de recepción. El servidor debe implementarse en Linux, mientras que los clientes deben operar tanto en Windows como Linux.

Servidor Linux

Cliente Windows Cliente Linux

Solución

CODIGO DEL SERVIDOR

//Nombre : server_udp

//Proposito : Recibe un mensaje y lo devuelve al cliente

usando UDP

//Autor : Edwin Carrasco (adaptado de

http://www.linuxhowtos.org/C_C++/socket.htm)

//FCreacion : 02-Nov-2010

//FModific. : 24-06-2013

//Compilacion : gcc -o servidor server_udp.c

//Ejecucion : ./servidor <nro_Puerto>

#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <strings.h> #include <unistd.h>

UNIVERSIDAD ANDINA DEL CUSCO

TECNOLOGIAS DE COMUNICACION

GUIA DE LABORATORIO

ECP 4 de 12

void AvisarError(char *mensaje)

{

perror(mensaje); exit(0);

}

int main(int argc, char *argv[])

{

//Variables

int descriptorSocket;

unsigned int tamSocketServidor; unsigned int tamSocketCliente; int n;

struct sockaddr_in socketSrv; struct sockaddr_in socketCli; char buf[1024];

int longMsg; char *rpta;

if (argc < 2) {

fprintf(stderr, "ERROR, no se especifico un puerto\n"); exit(0);

}

//Crear socket de tipo datagrama (UDP) descriptorSocket = socket(AF_INET, SOCK_DGRAM, 0);

if (descriptorSocket < 0) AvisarError("Error al abrir el socket");

tamSocketServidor = sizeof(socketSrv);

//Pone en cero la estructura bzero(&socketSrv, tamSocketServidor);

socketSrv.sin_family = AF_INET; //socket tipo Internet-IPv4 socketSrv.sin_addr.s_addr = INADDR_ANY; //No se necesita

conocer IP del host socketSrv.sin_port = htons(atoi(argv[1])); //Puerto del

servidor

if (bind(descriptorSocket,(struct sockaddr *) &socketSrv, tamSocketServidor) < 0)

AvisarError("Error durante binding");

tamSocketCliente = sizeof(struct sockaddr_in);

while (1) {

//Recibir mensaje del cliente

n = recvfrom(descriptorSocket, buf, 1024, 0, (struct sockaddr *) &socketCli, &tamSocketCliente);

UNIVERSIDAD ANDINA DEL CUSCO

TECNOLOGIAS DE COMUNICACION

GUIA DE LABORATORIO

ECP 5 de 12

if (n < 0)

AvisarError("Error en recvfrom");

write(1, "Se recibio el mensaje: ", 23); write(1, buf, n);

rpta = buf;

//Enviar mensaje de confirmacion longMsg = n;

n = sendto(descriptorSocket, rpta, longMsg, 0, (struct sockaddr *) &socketCli, tamSocketCliente);

if (n < 0)

AvisarError("Error

...

Descargar como (para miembros actualizados) txt (13 Kb)
Leer 5 páginas más »
Disponible sólo en Clubensayos.com