•John Michel Rivera de León
John Michel Rivera de León
Juego de Cartas con Java
TECNOLOGICO DE ESTUDIOS SUPERIORES
DEL ORIENTE DEL ESTADO DE MEXICO
Modelo básico cliente/servidor
Características:
Los clientes y los servidores pueden estar distribuidos en diferentes máquinas.
El mecanismo general de comunicación consiste en:
- Cliente envía petición y espera respuesta.
- Servidor recibe petición, procesa y contesta con respuesta.
Sistema Cliente-Servidor
o Esta forma de comunicación esta orientada a soportar los
roles y el intercambio de mensajes de las interacciones típicas entre cliente-servidor
Socket Cliente
Socket
Servidor Cualquier
puerto
Puerto acordado
Mensaje
Otros puertos
Protocolo de comunicación
Tipos de Protocolos:
UDP: Protocolo de Datagramas de Usuario.
TCP/IP Se compone de 2 Protocolos:
TCP; Protocolo de Control de Transferencia
IP; Internet Protocol
Tecnología Java
Cuando Sun decidió lanzar su nuevo estándar Java, llamado Java2, creó tres diferentes entornos para desarrollo y
ejecución de aplicaciones:
J2SE: Java 2 Second Edition.
J2ME: Java 2 Micro Edition.
J2EE(Java 2 Enterprise Edition)
Servidores Multihilos
La Tecnología Multihilos no solamente simplifica el código del servidor de manera considerable, sino que además hace mas sencillo el desarrollo de servidores que explotan el paralelismo.
Sistema operativo Hilo servidor
Petición que viene desde la red
Hilo trabajador Servidor Petición asignada hacia un hilo
trabajador
Diagrama de procesos (Servidor)
Codigo Servidor
while ( true ) {
try {
System.out.println( "Listening....Esperando Conexiones Entrantes...");
cliente = servidor.accept();
online.addElement(cliente);
entrada = new DataInputStream( cliente.getInputStream() );
String user2=(String)entrada.readUTF();
System.out.println("Peticion de Ingreso de : "+user2);
if(usuarios.contains(user2)==true){
salida= new DataOutputStream(cliente.getOutputStream());
salida.writeUTF("Ya Existe Ese nombre de Usuario");
salida.flush(); delClien(cliente);
salida.close(); entrada.close(); cliente.close();
System.out.println("Se Duplico Un nombre de usuario y se Cerro esa Conexion...");
}
else{
usuarios.addElement(user2);
new Independencia_ES(cliente, this).start(); }
}
catch (Exception e ) { System.out.println(e); }
}
Hilo administrador de cliente
do {
try {
mensaje =( String ) entrada.readUTF();
enviarDatos(mensaje);
}catch(SocketException se){ System.out.println(se);} }
} while ( !mensaje.equals(user2+": adios" ) );
public void enviarDatos( String mensaje){
try { for(int i=0;i<socks.tam2();i++){
Socket cliente2=socks.selectCliente(i);
DataOutputStream salida2 = new DataOutputStream( cliente2.getOutputStream() );
DataInputStream entrada2 = new DataInputStream( cliente2.getInputStream() );
salida2.writeUTF(mensaje);
salida2.flush();}
}catch ( IOException e) { System.out.println(e); }
}
Cliente
El cliente utiliza una interfaz para enviar peticiones a el
servidor, a través de un protocolo de comunicación especifico de la aplicación.
Aplicación n
SO local
Aplicación n
SO local Protocolo
especifico De la aplicación
Red
Máquina servidor
Máquina cliente
Diagrama de procesos (Cliente)
Conexión al servidor
public void conectarAServidor() throws IOException{
System.out.println( "Intentando Conectar Con el Servidor...\n" );
cliente = new Socket(HOST, PUERTO);
System.out.println( "Conectado a: " +
cliente.getInetAddress().getHostName() );
}
public void obtenerFlujos() throws IOException{
salida = new DataOutputStream( cliente.getOutputStream() );
salida.writeUTF(User);
salida.flush();
salida.writeUTF(User);
salida.flush();
entrada = new DataInputStream( cliente.getInputStream() );
General.append("\n Conexion Establecida...");
System.out.println( "Conexion Establecida" );