Está usted en Indice > Construcción > Lenguajes > Java > Lecciones y Paso a Paso > Leer y Escribir en un Socket en Java
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Leer y Escribir en un Socket en Java (2)

La primera línea de esta secuencia crea un nuevo objeto Socket y lo llama echoSocket. El constructor Socket utilizado aquí (hay otros tres) requiere el nombre de la máquina y el número de puerto al que quiere conectarse. El programa de ejemplo utiliza el host taranis, que es el nombre de una máquina (hipotética) de nuestra red local. Cuando teclees y ejecutes este programa en tu máquina, deberías cambiar este nombre por una máquina de tu red. Asegúrate de que el nombre que utiliza tienes el nombre IP totalmente cualificado de la máquina a la que te quieres conectar. El segundo argumento es el número de puerto. El puerto número 7 es el puerto por el que escucha el Echo del servidor.

La segunda línea del código anterior abre un canal de entrada sobre el socket, y la tercera línea abre un canal de salida sobre el mismo socket. EchoTest sólo necesita escribir en el stream de salida y leer del stream de entrada para comunicarse a través del socket con el servidor. El resto del programa hace esto. Si no estás familiarizado con los streams de entrada y salida, podrías querer leer Streams de Entrada y Salida.

La siguiente sección de código lee desde el stream de entrada estandard de EchoTest (donde el usuario teclea los datos) una línea cada vez. EchoTest escribe inmediatamente la entrada seguida por un carácter de nueva línea en el stream de salida conectado al socket.

String userInput;

while ((userInput = stdIn.readLine()) != null) {
os.writeBytes(userInput);
os.writeByte('n');
System.out.println("echo: " + is.readLine());
}

La última línea del bucle while lee una línea de información desde el stream de entrada conectado al socket. El método readLine() se bloquea hasta que el servidor haya devuelto la información a EchoTest. Cuando readline() retorna, EchoTest imprime la información en la salida estandard.

Este bloque continúa -- EchoTest lee la entrada del usuario, la envía al servidor Echo, obtiene una respuesta desde el servidor y la muestra -- hasta que el usuario teclee un carácter de final de entrada.

Cuando el usuario teclea un carácter de fin de entrada, el bucle while termina y el programa continúa ejecutando las siguientes líneas de código.

os.close();
is.close();
echoSocket.close();

Estas línea de código caen en la categoría de limpieza del hogar. Un programa con buen comportamienteo, se limpia a sí mismo y este programa tiene buen comportamiento. Estas tres líneas de código cierran las streams de entrada y salida conectados al socket, y cierra la conexión del socket con el servidor. El orden es importante -- debe cerrar los streams conectados a un socket antes de cerrar éste.

Este programa cliente tiene un comportamiento correcto y sencillo porque el servidor Echo implementa un protocolo sencillo. El cliente envía texto al servidor, y el servidor lo devuelve. Cuando tus programas clientes hablen con servidores más complicados como un servidor http, tu programa cliente también será más complicado. Si embargo, las cosas básicas son las que has visto en este programa.

1. Abrir un socket.
2. Abrir un stream de entrada y otro de salida hacia el socket.
3. Leer y escribir a través del socket de acuerdo al protocolo del servidor.
4. Cerrar los Streams.
5. Cerrar el socket.

Sólo el paso 3 será diferente de un cliente a otro, dependiendo del servidor. Los otros pasos permanecen inalterables.




Autor: Sun, Traducido por Juan Antonio Palos (Ozito)
http://www.programacion.net/java/tutorial/red/12/

Usuarios que han visto este tema también han visto...

- Métodos tipos de letras en Java
- La clase Math.
- Deshabilitar todos los componentes incluidos en un Container Swing en Java
- Cómo crear una clase en Java que lea desde el teclado.
- Propagación de Excepciones en Java


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 22-11-2008 a las 06:39:24