Está en la página 1de 10

PROGRAMACION DE SOCKETS TCP EN JAVA

Curso: Sistemas Distribuidos Profesor: Erwin Mac Dowall Reynoso Alumno: Arellano Vargas Mauro Esteban Ciclo: 2012-1

Qu es un socket?
Es

un mecanismo de comunicacin entre programas a travs de una red TCP/IP. De hecho, al establecer una conexin va Internet estamos utilizando sockets: los sockets realizan la interface entre la aplicacin y el protocolo TCP/IP.

STREAM SOCKETS (TCP)


Son un servicio orientado a la conexin, donde

los datos se transfieren sin encuadrarlos en registros o bloques, asegurndose de esta manera que los datos lleguen al destino en el orden de transmisin. Si se rompe la conexin entre los procesos, stos sern informados de tal suceso para que tomen las medidas oportunas, por eso se dice que estn libres de errores.

STREAM SOCKETS (TCP) [2]


Orientado a la conexin implica:

Establecer una conexin entre un par de sockets. 2. Uno de los sockets atiende peticiones de conexin (servidor) 3. El otro solicita una conexin (cliente). 4. Una vez que los dos sockets estn conectados, se pueden utilizar para transmitir datos en ambas direcciones.
1.

EXPLICACION
Por el lado del cliente: El cliente conoce el nombre

de la mquina en la que el servidor est corriendo y el puerto por el cual el servidor est escuchando. Para realizar una solicitud de conexin, el cliente intenta conectarse con la mquina del servidor y su puerto. Tambin tiene que identificarse con el servidor por lo que se enlaza a un puerto local que va a utilizar durante esta conexin. Este es generalmente asignado por el sistema.

EXPLICACION [2]
Si todo va bien, el servidor acepta la conexin. Una vez

aceptado, el servidor recibe un nuevo socket ligado al mismo puerto local y tambin tiene su terminal remoto establecido en la direccin y el puerto del cliente. Se necesita un nuevo socket para que pueda seguir escuchando al socket original de las solicitudes de conexin, mientras atiende a las necesidades del cliente conectado.

En el lado del cliente, si se acepta la conexin, se crea un

socket y ste puede utilizarlo para comunicarse con el servidor.

SOCKETS TCP EN JAVA


Pasos:

1.

2. 3.

4.
5.

Un cliente lee una lnea de su entrada estndar (teclado) y la enva a travs de su socket al servidor. El servidor lee una lnea de su socket de conexin. El servidor pasa la lnea a caracteres en mayscula. El servidor enva la lnea modificada a travs de su socket de conexin al cliente. El cliente lee la lnea modificada de su socket y la muestra en su salida estndar (monitor)

SOCKETS TCP EN JAVA [2]: Clase Cliente


import java.io.*; import java.net.*; Class TCPCliente { public void main (String argv[]) throws Exception{ String frase; String fraseModificada; BufferedReader entradaDesdeUsuario = new BufferedReader (new InputStreamReader (System.in)); Socket socketCliente = new Socket (localhost,6789); DataOutputStream salidaAServidor = new DataOutputStream (socketCliente.getOutputStream()); BufferedReader entradaDesdeServidor= new BufferedReader (new InputStreamReader (socketCliente.getInputStream())); frase = entradaDesdeUsuario.readLine(); salidaAServidor.writeBytes(frase + \n); fraseModificada = entradaDesdeServidor.readLine(); System.out.println(DEL SERVIDOR: + fraseModificada); } }

SOCKETS TCP EN JAVA [3]: Clase Servidor


import java.io.*; import java.net.*; Class TCPServidor { public void main (String argv[]) throws Exception{ String fraseCliente; String fraseMayusculas; ServerSocket socketAcogida = serverSocket (6789); while(true){ ServerSocket socketConexion = socketAcogida.accept(); BufferedReader entradaDesdeCliente= new BufferedReader (new InputStreamReader (socketConexion.getInputStream())); DataOutputStream salidaACliente = new DataOutputStream (socketConexion.getOutputStream()); fraseCliente = entradaDesdeCliente.readLine(); fraseMayusculas= fraseCliente.toUpperCase() + \n; salidaACliente.writeBytes(fraseMayusculas); } } }