Download Diapositiva 1 - pedro beltran canessa
Document related concepts
no text concepts found
Transcript
TECNOLOGICO DE ESTUDIOS SUPERIORES DEL ORIENTE DEL ESTADO DE MEXICO Juego de Cartas con Java •John Michel Rivera de León John Michel Rivera de León 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 Cualquier puerto Puerto acordado Socket Socket Cliente Mensaje Otros puertos Servidor 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. Hilo servidor Petición asignada hacia un hilo trabajador Servidor Hilo trabajador Petición que viene desde la red Sistema operativo 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. Máquina cliente Aplicación n SO local Máquina servidor Protocolo especifico De la aplicación Aplicación n SO local Red 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" ); } Movimiento de Carta boton2.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { JTextField eq=new JTextField(); String ex=""+getMousePosition(); String exk= ex.replace("java.awt.Point[x=", ""); eq.setText(exk); eq.select(0, exk.indexOf(",")); int xok=Integer.parseInt(eq.getSelectedText()); eq.select(exk.indexOf("=")+1,exk.length()-1); int yok=Integer.parseInt(eq.getSelectedText()); boton2.setBounds(xok-32, yok-80, 77, 115); } Fuentes: Bibliografia: Tanenbaum, Andrew. Sistemas Operativos Distribuidos. ED.Prentice Hall. Capitulo 1,3,4. Deitel Deitel. Cómo Programar en Java. Ed.Pearson. Capitulo 18 Redes. Ken Arnold, James Gosling, David Holmes. THE Java™ Programming Language, Fourth Edition. Documentación de Java.