sábado, 6 de junio de 2009

Socket



Autores


Antony Petrocelli: petrocellia@gmail.com


Daniel Acosta: shagdan01@hotmail.com




Palabras Claves: socket, cliente, servidor, programación, API, proceso, librerias.





Resumen

El socket es un método que permiten que dos o mas programas intercambien información, a través de una IP, un protocolo y un puerto de comunicación. Los tipos de sockets son los orientados a conexión y los sin conexión.

Los sockets permiten implementar una arquitectura cliente-servidor. La comunicación ha de ser iniciada por uno de los programas que se denomina programa cliente. El segundo programa espera a que otro inicie la comunicación, por este motivo se denomina programa servidor.

Para la programación de sockets, cada lenguaje cuenta con ciertas librerías que permiten desarrollar aplicaciones orientadas a conexiones de red.




Socket


Un socket es un método con el que se puede establecer una comunicación entre un cliente y un servidor en una red para intercambiar flujos de datos.


Los sockets son mecanismos de comunicación entre procesos que permiten que un proceso hable ( emita o reciba información ) con otro proceso incluso estando estos procesos en distintas máquinas. Esta característica de interconectividad entre máquinas hace que el concepto de socket nos sirva de gran utilidad. Esta interfaz de comunicaciones es una de las distribuciones de Berkeley al sistema UNIX, implementándose las utilidades de interconectividad de este Sistema Operativo, usando sockets.


Las propiedades de un socket dependen de las características del protocolo en el que se implementan. El protocolo más utilizado es TCP. Los sockets se caracterizan por tener una dirección IP, un protocolo de comunicación y un número de puerto.


La creación de los sockets se da a través de un sistema de peticiones soportada por una interfaz de programación de aplicaciones, tales APIs se encuentras disponibles en muchos lenguajes de desarrollo.


    Tipos de Sockets

  • SOCK_STREAM: Este tipo de socket exige que la conexión entre los programas debe estar establecida correctamente para poder trasmitir datos, (TCP). Esto garantiza que todos los datos van a llegar de un programa a otro correctamente, se utiliza cuando la informacion a trasmitir es importante y no se debe perder ningún dato. Si uno de los programas esta ocupado y no atiende la comunicación, el otro quedara

  • SOCK_RAW: permite el acceso a protocolos de más bajo nivel como el IP ( nivel de red )

  • SOCK_DGRAM: sockets para comunicaciones en modo no conectado, con envío de datagramas de tamaño limitado ( tipo telegrama ). En dominios Internet como la que nos ocupa el protocolo del nivel de transporte sobre el que se basa es el UDP.
  • SOCK_SEQPACKET: tiene las características del OCK_STREAM pero además el tamaño de los mensajes es fijo.


Programación de Sockets


Los sockets están implementados como bibliotecas de programación para multitud de sistemas operativos, simplificando la tarea de los programadores, existen muchas librerías de comunicaciones que utilizan los protocolos TCP y UDP para distintos sistemas operativos.


  • SolarSockets Librería para C++ Multiplataforma y Mutithread, gratuita para proyectos libres. Fácil de usar y con varios Ejemplos.

  • Indy.sockets Biblioteca de código abierto para Delphi Win32/Kilyx/Free Pascal/Delphi.NET/c#/VB.NET/Mono. Implementa más de 100 protocolos (SMTP/POP3/IMAP/NNTP y un largo etcétera).

  • SDL NET Proporciona funciones y tipos de dato multiplataforma para programar aplicaciones que trabajen con redes.

  • C++ Sockets Library Esta es una librería de clases en C++ bajo licencia GPL que 'mapea' el berkeley sockets C API, y funciona tanto en algunos sistemas unix como en win32.

  • GNU Common C++ Librería de propósito general que incluye funciones de red.

  • HackNetLibrería de comunicaciones para crear juegos multiplayer.

  • DirectX - DirectPlay Simplifica el acceso de las aplicaciones a los servicios de comunicación.


Uso de Sockets

Una vez el socket ha sido creado, puede ser utilizado para esperar conexiones o para iniciar una conexión. Al socket empleado por un servidor para esperar conexiones entrantes se le conoce como socket pasivo, mientras que al socket empleado por un cliente para iniciar una conexión se le conoce como socket activo. La única diferencia entre los sockets activos y pasivos radica en como son utilizados por la aplicación que los ha creado, ya que estos se crean del mismo modo.


Proceso de comunicación a través de socket

  • El proceso servidor abre un socket asociado a determinado puerto TCP.

  • El servidor permanece “escuchando” en dicho puerto, a la espera de la apertura de una conexión.

  • Un cliente abre un socket conectándose al servidor haciendo referencia a su dirección IP y al número de puerto.

  • Una vez establecida la conexión entre ambos procesos, ya no existe más diferencia entre cliente y servidor.

  • El socket puede ser visto, por ambos procesos, como un archivo de lectura/escritura abierto.

  • Ambos procesos intercambian información de acuerdo al protocolo de aplicación establecido.

  • Para finalizar la conexión, cualquiera de los dos procesos cierra el socket.





Referencias
:


[1] http://sherekan.com.ar/2009/02/20/introduccion-a-sockets/


[2] http://blog.smaldone.com.ar/2006/11/06/programacion-para-redes-y-concurrencia-i/


[3] http://translate.google.co.ve/translate?hl=es&sl=en&u=http://placementpapers.net/helpingroot/paper/Socket-Programming-Interview-Questions-And-Answers&ei=jqEqSvWnF4W_tweltvn0BA&sa=X&oi=translate&resnum=3&ct=result&prev=/search%3Fq%3Dpapers%2Bsocket%26hl%3Des%26sa%3DG

No hay comentarios:

Publicar un comentario