Conceptos básicos de la comunicación
con Sockets TCP/IP
TCP:
En ese anticuado analogía centralita, el
zócalo tiene dos conectores
conectados a teléfono de cada cliente:
uno es un receptáculo, y el otro es un
tapón. Piense en estos conectores
como los puertos, sino porque el
puerto está asociado con un teléfono,
juntos hacen una toma, como el
puerto TCP o UDP, cuando se combina
con una dirección IP es un socket.
IP:
En el lado del servidor de la conexión es
una dirección IP para el servidor y un
puerto para hacer una toma en el host del
servidor. Para establecer una conexión
entre la capa de aplicación de cliente y la
capa de aplicación de servidor es una
conexión virtual entre estos dos sockets.
Direcciones IP y Puertos.
Direccion IP:
Una dirección IP es un número de
32 bits que identifica de manera
lógica y jerárquica a una interfaz
de un dispositivo (habitualmente
una computadora) dentro de una
red que utilice el protocolo IP
(Internet Protocolo).
Puertos:
Una vez que el mensaje llega a la IP de destino
es necesario conocer a que programa/proceso
hay que entregarlo. Esta es la función
del número de puerto: un número de puerto
es un número de 16 bits (de 1 a 65535) que
sirve para identificar el proceso al que
entregar el mensaje dentro de la máquina.
¿Qué es un socket?
Un socket es una interfaz de entrada-salida de datos que permite la
intercomunicación entre procesos. Los procesos pueden estar ejecutándose en
el mismo o en distintos sistemas, unidos mediante una red. Un identificador de
socket es una pareja formada por una dirección IP y un puerto. Cuando un
programa crea un socket puede solicitarle al sistema operativo que asocie un
número de puerto con el socket.
Clase de sockets y SocketServer.
Clase de sockets:
Tipo 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
Tipo SOCK_STREAM: para comunicaciones fiables en modo conectado,
de dos vías y con tamaño variable de los mensajes de datos. Por debajo, en
dominios Internet, subyace el protocolo TCP.
Tipo SOCK_RAW: permite el acceso a protocolos de más bajo nivel como
el IP ( nivel de red )
Tipo SOCK_SEQPACKET: tiene las características del SOCK_STREAM pero
además el tamaño de los mensajes es fijo.
SocketServer:
TCPServer: Esto utiliza el protocolo TCP de
Internet, que proporciona flujos continuos de
datos entre el cliente y el servidor.
UDPServer: Esto usa datagramas, que son
paquetes discretos de información que pueden
llegar fuera de orden o perderse mientras están
en tránsito.
UnixStreamServer y UnixDatagramServer: Estas
clases utilizadas con menos frecuencia son
similares a las clases TCP y UDP, pero usan sockets
de dominio Unix; no están disponibles en
plataformas que no sean Unix.
Sockets y Streams
Sockets:
Los sockets son basicamente formas en las que
podemos interconectar 2 (o mas) programas
mediante el uso de la internet. En java se
utilizan para poder crear conexiones utilizando
basicamente una IP/hostname y un puerto
para establecer la conexión. Para aprender
podemos utilizarla para conenctar 2
programas por medio de Internet.
Stream:
Un Streams es un medio utilizado para leer
datos de una fuente y para escribir datos en
un destino. Tanto la fuente como el destino
pueden ser archivos, sockets, memoria,
cadena de caracteres, y también procesos.
Los Streams se caracterizan por se
unidireccionales, es decir que un Stream se
utilizara solo para leer, solo para escribir, pero
no ambas acciones al mismo tiempo.
Sockets y threads
Sockets:
Desde dos clases Test (TestServidor y TestCliente)
hice las pruebas, corrí primero TestServidor y el
servidor arrancó y se puso a la espera del cliente.
Luego corro TestCliente y muestra los mensajes
que debe mostrar y cierra la conexión y ya. Si
quiero volver a probarlo tengo que volver a correr
TestServidor y TestCliente. Estas pruebas son en
localhost.
Threads:
Hace unos días veíamos cómo hacer que un
programa cliente y un programa servidor
intercambiaran mensajes desde distintos
puntos de la red: Comunicación cliente-
servidor . Hoy veremos cómo hacer lo mismo
pero dando soporte a muchos clientes al
mismo tiempo utilizando para cada uno de
ellos un Thread o Hilo.

Sockets y servidores

  • 2.
    Conceptos básicos dela comunicación con Sockets TCP/IP TCP: En ese anticuado analogía centralita, el zócalo tiene dos conectores conectados a teléfono de cada cliente: uno es un receptáculo, y el otro es un tapón. Piense en estos conectores como los puertos, sino porque el puerto está asociado con un teléfono, juntos hacen una toma, como el puerto TCP o UDP, cuando se combina con una dirección IP es un socket. IP: En el lado del servidor de la conexión es una dirección IP para el servidor y un puerto para hacer una toma en el host del servidor. Para establecer una conexión entre la capa de aplicación de cliente y la capa de aplicación de servidor es una conexión virtual entre estos dos sockets.
  • 3.
    Direcciones IP yPuertos. Direccion IP: Una dirección IP es un número de 32 bits que identifica de manera lógica y jerárquica a una interfaz de un dispositivo (habitualmente una computadora) dentro de una red que utilice el protocolo IP (Internet Protocolo). Puertos: Una vez que el mensaje llega a la IP de destino es necesario conocer a que programa/proceso hay que entregarlo. Esta es la función del número de puerto: un número de puerto es un número de 16 bits (de 1 a 65535) que sirve para identificar el proceso al que entregar el mensaje dentro de la máquina.
  • 4.
    ¿Qué es unsocket? Un socket es una interfaz de entrada-salida de datos que permite la intercomunicación entre procesos. Los procesos pueden estar ejecutándose en el mismo o en distintos sistemas, unidos mediante una red. Un identificador de socket es una pareja formada por una dirección IP y un puerto. Cuando un programa crea un socket puede solicitarle al sistema operativo que asocie un número de puerto con el socket.
  • 5.
    Clase de socketsy SocketServer. Clase de sockets: Tipo 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 Tipo SOCK_STREAM: para comunicaciones fiables en modo conectado, de dos vías y con tamaño variable de los mensajes de datos. Por debajo, en dominios Internet, subyace el protocolo TCP. Tipo SOCK_RAW: permite el acceso a protocolos de más bajo nivel como el IP ( nivel de red ) Tipo SOCK_SEQPACKET: tiene las características del SOCK_STREAM pero además el tamaño de los mensajes es fijo. SocketServer: TCPServer: Esto utiliza el protocolo TCP de Internet, que proporciona flujos continuos de datos entre el cliente y el servidor. UDPServer: Esto usa datagramas, que son paquetes discretos de información que pueden llegar fuera de orden o perderse mientras están en tránsito. UnixStreamServer y UnixDatagramServer: Estas clases utilizadas con menos frecuencia son similares a las clases TCP y UDP, pero usan sockets de dominio Unix; no están disponibles en plataformas que no sean Unix.
  • 6.
    Sockets y Streams Sockets: Lossockets son basicamente formas en las que podemos interconectar 2 (o mas) programas mediante el uso de la internet. En java se utilizan para poder crear conexiones utilizando basicamente una IP/hostname y un puerto para establecer la conexión. Para aprender podemos utilizarla para conenctar 2 programas por medio de Internet. Stream: Un Streams es un medio utilizado para leer datos de una fuente y para escribir datos en un destino. Tanto la fuente como el destino pueden ser archivos, sockets, memoria, cadena de caracteres, y también procesos. Los Streams se caracterizan por se unidireccionales, es decir que un Stream se utilizara solo para leer, solo para escribir, pero no ambas acciones al mismo tiempo.
  • 7.
    Sockets y threads Sockets: Desdedos clases Test (TestServidor y TestCliente) hice las pruebas, corrí primero TestServidor y el servidor arrancó y se puso a la espera del cliente. Luego corro TestCliente y muestra los mensajes que debe mostrar y cierra la conexión y ya. Si quiero volver a probarlo tengo que volver a correr TestServidor y TestCliente. Estas pruebas son en localhost. Threads: Hace unos días veíamos cómo hacer que un programa cliente y un programa servidor intercambiaran mensajes desde distintos puntos de la red: Comunicación cliente- servidor . Hoy veremos cómo hacer lo mismo pero dando soporte a muchos clientes al mismo tiempo utilizando para cada uno de ellos un Thread o Hilo.