0% encontró este documento útil (0 votos)
44 vistas3 páginas

Sockets

programa en java

Cargado por

Horacio Horas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
44 vistas3 páginas

Sockets

programa en java

Cargado por

Horacio Horas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 3

1

Programa Cliente

La aplicacin cliente se conecta a un servidor mostrando el nombre de la


mquina y el nmero puerto (tipo de servicio que solicita) en el que el
servidor est instalado.
Una vez conectado, lee una cadena del servidor y la escribe en la pantalla.
USAMOS UNA IP PRIVADA LA CUAL FUNCIONARIA EN UNA
INTRANET.
import java.io.*;
import java.net.*;
class Cliente {
String HOST = "192.168.1.10";
int PORT=5000;
public Cliente( ) {
try{
Socket socketCli = new Socket( HOST , PORT );
InputStream aux = socketCli.getInputStream();
DataInputStream datos = new DataInputStream( aux );
System.out.println(datos.readUTF() );
socketCli.close();
} catch( Exception x ) {
System.out.println( x.getMessage() );
}
}
public static void main( String[] arg ) {
new Cliente();
}
}

En primer lugar se crea el socket denominado socketCli, al que se le


especifican el nombre de host (HOST) y el nmero de puerto (PORT) en este
ejemplo constantes.
Luego se asocia el flujo de datos de dicho socket (obtenido
mediante getInputStream)), que es asociado a un flujo
(datos) DataInputStream de lectura secuencial. De dicho flujo capturamos una
cadena ( readUTF() ), y la imprimimos por pantalla (System.out).
El socket se cierra, una vez finalizadas las operaciones, mediante el
mtodo close().
Debe observarse que se realiza una gestin de excepcin para capturar los
posibles fallos tanto de los flujos de datos como del socket.
Programa Servidor

El programa servidor se instala en un puerto determinado, a


la espera de conexiones, a las que tratar mediante un
segundo socket.
Cada vez que se presenta un cliente, le saluda con una frase
"Hola cliente N".
Este servidor slo atender hasta tres clientes, y despus
finalizar su ejecucin, pero es habitual utilizar bucles infinitos
( while(true) ) en los servidores, para que atiendan llamadas
continuamente.
Tras atender cuatro clientes, el servidor deja de ofrecer su
servicio:
import java.io.* ;
import java.net.* ;
class Servidor {
int PORT =5000;
public Servidor( ) {
try {
ServerSocket socketSer = new ServerSocket(PORT);
System.out.println("Escucho el puerto " + PORT);
{

for ( int numCliente = 0; numCliente < 3; numCliente ++; )


Socket socketCli = socketSer.accept();
System.out.println("Atiendo al cliente: " + numCliente);

3
OutputStream aux = socketCli.getOutputStream();
DataOutputStream datos= new DataOutputStream( aux );
datos.writeUTF( "Hola cliente " +
numCliente+obtenerclima());
socketCli.close();
}
System.out.println("Demasiados clientes por hoy");
} catch( Exception x ) {
System.out.println( x.getMessage() );
}
}
public static void main( String[] arg ) {
new Servidor();
}
}

Utiliza un objeto de la clase ServerSocket (socketSer), que


sirve para esperar las conexiones en un puerto determinado
(PORT), y un objeto de la clase Socket (socketCli) que sirve
para gestionar una conexin con cada cliente.
Mediante un bucle for y la variable numCliente se restringe el
nmero de clientes a tres, con lo que cada vez que en el
puerto de este servidor aparezca un cliente, se atiende y se
incrementa el contador.
Para atender a los clientes se utiliza la primitiva accept() de la
clase ServerSocket, que es una rutina que crea un
nuevo Socket (socketCli) para atender a un cliente que se ha
conectado a ese servidor.
Se asocia al socket creado (socketCli) un flujo (datos) de
salida DataOutputStream de escritura secuencial, en el que se
escribe el mensaje a enviar al cliente.
El tratamiento de las excepciones es muy reducido en nuestro
ejemplo, tan solo se captura e imprime el mensaje que
incluye la excepcin mediante getMessage().

También podría gustarte