tp_socket

Upload: hector-bitancur

Post on 06-Jul-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 tp_socket

    1/3

    TRABAJO PRÁCTICO DE PROCESAMIENTO DISTRIBUIDO

    Introducción

    Este trabajo esta orientado a la interacción de procesos mediante la utilización de socket.

    Socket es básicamente una interfase que logra la comunicación de procesos a través de redes,

    usando un conjunto de funciones y protocolos.El trabajo práctico esta compuesto por dos programas, uno denominado !"E#$E y el otro

    SE%&"'(%. El primero consta de una estructura como se ve en la figura ).), la cual se

    realiza utilizando un conjunto de funciones que brinda el socket.

    *ara poder establecer la comunicación entre procesos es

    necesario primeramente realizar una llamada al sistema

    mediante la función socket, la cual produce que se cree una

    nueva estructura de datos que retiene información

    indispensable para la comunicación entre dic+os procesos y

    que se aada dic+a estructura a la tabla de descriptores de

     procesos.

    "nicialmente, el socket se crea en el estado incone-o, quesignifica que el socket no está asociado con un determinado

    destino. *ara asociarlo, se realiza una llamada al sistema,

    onnect, que liga el socket a un destino permanente y lo pone

    en el estado conectado.

    na vez realizado estas operaciones, ya se puede a comenzar 

    al intercambio libre de datos entre los distintos procesos

    conectados mediante las funciones /rite y %ead, +asta que un

    determinado suceso de fin de comunicación o por producto de

    una terminación anormal, determine el final de la

    comunicación.

    *ara terminar la utilización del socket es necesario implementar la función close.0ientras que el segundo programa consta de una estructura como se ve en la figura ).1, la

    cual comienza con la llamada socket que cumple la misma función que en el programa

    anterior.

    Se continua con la función bind, que una vez que el socket se

    +a creado, el servidor usa la llamada al sistema de lazo para

    establecer un adress local para él. El lazo tiene la forma

    siguiente2 bind 3socket, localaddr, addrlen4

    !a llamada del sistema listen permite al servidor preparar el

    socket para poder recibir cone-iones entrantes. En términos de

    los protocolos subyacentes, listen pone el socket en un modo

    del pasivo listo par aceptar cone-iones. uando el servidor 

    invoca a listen, también informa al sistema operativo que el

    soft5are protocolar debe encolar demandas simultáneas

    m6ltiples que llegan al socket.

    na vez el socket se +a establecido, el servidor necesita

    esperar por la cone-ión. *ara lograr esto se usa la llamada al

    sistema accept. !a llamada para accept bloquea +asta la llegada

    de demanda de cone-ión.

    *ara aplicar estos conceptos proponemos el siguiente trabajo

     práctico2

    Página 1

    Socket

    onnect

    /rite

    %ead

    close

    7ig. ).)

    !"E#$E

    !isten

    8ind

    Socket

    /rite

    %ead

    9ccept

    close

    7ig. ).1

    SE%&"'(% 

  • 8/17/2019 tp_socket

    2/3

    Realizar un proceso que pueda transmitir por socket una entrad por teclado, y a su vezpueda recibir por un socket y hacer el display por pantalla de lo recibido. De donde lee yescribe (en lo que hace a los socket) lo toma de un archivo de configuración. De estamanera al lanzar dos instancias de este proceso, se debera permitirle a dos personas!chatear" por una red.omentarios2

    Esta la llamamos usualmente :c+atear; y consiste en copiar el t funciones indispensables para el manejo de socket y la noción impl

  • 8/17/2019 tp_socket

    3/3

      H

      error3Iimposible preparar al socket para comunicacionI4L

      return3)4L

      M

      longaddr Q sizeof3addrNserv4L

      if 3 3nuevo Q accept3sock, 3struct sockaddr G4VaddrNserv, Vlongaddr44 QQ )4

      H  error3I#o se puede aceptar la comunicacionI4L

      return3)4L

      M

      printf3Iomenzando la comunicacionKnI4L

      5+ile3strcmp3msg,I7"#I44

      H

      valQread3nuevo, msg,09D4L

      if3 val AQ F4

      H

      error3IE%%(% 'E !E$%9, no se puede recibir el mensaje correctamenteI4L

      return3)4L  M

      msgOvalPQWKFWL

      printf3I0sg recibido Js KnI,msg4L

      if 3strcmp3msg,I7"#I4 QQ F4

      breakL

      printf3I0sg a enviar B7"# terminaB I4Lgets3msg4L

      if 35rite3nuevo,msg,strlen3msg44 AQ F4

      H

      error3IE%%(% 'E ES%"$%9, #o se puede enviar el mensaje correctamenteI4L

      return3)4L

      M

      M

      close3nuevo4L

      close3sock4L

     printf3I7in de la transmisionKnI4L

      return3)4L

    M

    Página 3