Comunicaciones TCP/IP
7.5.3.2 Envío y recepción de datos a través de sockets. SERVIDOR ServerSocket STREAM SOCKET Orientado a conexión
CLIENTE Socket
accept()
Conexión Socket
read
write
proceso
write
read
Como se representa en la figura, el servidor crea un socket (ServerSocket), le asigna una dirección y un puerto y acepta llamadas (accept). Tras el accept, el proceso queda bloqueado a la espera de recibir una llamada. Una vez se recibe una llamada (Socket cliente con la dirección y puerto del servidor), el accept crea un nuevo socket, por lo que todo servidor orientado a conexión requerirá, al menos, dos sockets, uno para recibir conexiones y otro para procesarlas. Cuando un cliente desea comunicarse, crea su socket (socket), y establece una conexión al puerto establecido. Es únicamente en ese momento cuando existe la conexión y ésta durará hasta que se libere (close()). Los sockets tienen asociados un “Stream” de entrada (InputStream) y otro de salida (OutputStream) a través de los cuales se puede leer y escribir datos respectivamente. La forma de obtener estos streams a partir del socket es la siguiente: objetoDeTipoSocket.getInputStream() à Devuelve un objeto de tipo InputStream objetoDeTipoSocket.getOutputStream() à Devuelve un objeto de tipo OutputStream
246