UNIDAD IV.- Comunicación con Java Manejo de IP Clase InetAddress public class DireccionIP{ public static void main(String [] args){ try{ InetAddress host = InetAddress.getByName(args[0]); System.out.println("IP="+host.getHostAddress()); System.out.println("Nombre="+host.getHostName()); System.out.print("Mi maquina es "); System.out.println(InetAddress.getLocalHost()); } catch(UnknownHostException e){ System.out.println("Host desconocido"); } } } Clase PingITV import java.net.*; public class PingITV { public static void main(String[] args) { if(args.length==0){ System.out.println("Usar java PingITV nombre"); System.out.println(" -nombre = nombre de host"); System.exit(0); } try { for(int i=0;i<4;i++){ InetAddress host=InetAddress.getByName(args[0]); System.out.println("Host="+host.getHostAddress()+"/" +host.getHostName()); } } catch(UnknownHostException ex){ System.err.println("Host desconocido"); System.exit(0); } } } Manejo de URL import java.io.*; import java.net.*; public class ManejoURL{ public static void main(String [] args){ try{ URL url = new URL("http://www.itver.edu.mx/index.html"); InputStreamReader flujo = new InputStreamReader(url.openStream()); BufferedReader filtro = new BufferedReader(flujo); String linea; while ((linea=filtro.readLine())!=null){ System.out.println(linea); } filtro.close(); } catch(MalformedURLException ex){ System.out.println(ex); } catch(IOException ex){ System.out.println(ex); } } } Comunicación TCP Servidor TCP import java.net.*; import java.io.*; public class ServidorTCP { private int puerto; private ServerSocket servidor; private String [] cadena; private Socket conexion; public ServidorTCP(int puerto){ this.puerto = puerto; cadena = new String[]{"Tecnológico será", "antorcha y luz de fuego permanente", "que hara brillar tenaz y prepotente", "el nombre de mi Heroica Veracruz"}; } public void iniciarConexion(){ try{ servidor = new ServerSocket(puerto); System.out.println("En espera de un cliente"); conexion = servidor.accept(); System.out.println("Un cliente llego!!!!"); } catch(IOException e){ System.out.println("Error de puerto TCP"); } } public void comunicarConCliente() { try { // Despues de aceptar un cliente se crean dos flujos BufferedReader reader = new BufferedReader( new InputStreamReader( conexion.getInputStream())); BufferedWriter writer = new BufferedWriter( new OutputStreamWriter( conexion.getOutputStream())); //Lee una cadena del cliente System.out.println("El cliente es "+reader.readLine()); for(int i=0;i<cadena.length;i++){ writer.write(cadena[i]+"\n"); writer.flush(); } writer.write("Conexion finalizada por el servidor\n"); writer.flush(); reader.close(); writer.close(); conexion.close(); } catch (IOException ioe){ } } System.out.println("Error en la conexion"); } public class Conexion { public static void main(String [] args){ ServidorTCP t = new ServidorTCP(3000); t.iniciarConexion(); t.comunicarConCliente(); } } Cliente TCP import java.net.*; import java.io.*; /** * Para correr el cliente se deberá abrir la consola * y ejecutar java ClienteTCP <nombreServidor> <Puerto> * donde <Puerto> es el puerto abierto por el servidor */ public class ClienteTCP { private Socket conexion; public ClienteTCP(String servidor,int puerto){ try { conexion = new Socket(servidor, puerto); } catch (IOException ioe) { System.err.println("Fallo la conexion"); System.exit(0); } } public void comunicarConServidor() { String cadena; try { // Despues de aceptar un cliente se crean dos flujos BufferedReader reader = new BufferedReader( new InputStreamReader( conexion.getInputStream())); BufferedWriter writer = new BufferedWriter( new OutputStreamWriter( conexion.getOutputStream())); //Envia su nombre al servidor writer.write(InetAddress.getLocalHost()+"\n"); writer.flush(); System.out.println("Texto recibido del servidor"); do{ cadena = reader.readLine(); System.out.println(cadena); } while(cadena!=null); } catch (IOException ioe1) { System.out.println("Error de conexión"); } } } public class Conexion1 { public static void main(String [] args){ ClienteTCP c = new ClienteTCP("localhost",4000); c.comunicarConServidor(); } } Comunicación UDP Servidor UDP import java.net.*; import java.awt.*; import java.awt.event.*; class ServidorUDP extends Frame{ private TextArea pantalla; private TextField captura; private InetAddress host; private String nombreHost; private DatagramPacket paqEnviado, paqRecibido; private DatagramSocket socketEnvia, socketRecibe; public ServidorUDP(){ super("Servidor"); setSize(400,300); iniciarSocket(); addComponentes(); addEventos(); setVisible(true); } public void addComponentes(){ Panel p = new Panel(); Label mensaje = new Label("Captura el mensaje"); captura = new TextField(20); p.add(mensaje); p.add(captura); add("North",p); pantalla = new TextArea(20,10); add("Center",pantalla); } public void addEventos(){ addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); captura.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ try { byte array[] = new byte[100]; pantalla.append("Servidor: "+captura.getText()+"\n"); array = captura.getText().getBytes(); paqEnviado = new DatagramPacket(array,array.length,host,5001); socketEnvia.send(paqEnviado); captura.setText(""); } catch (Exception ex) { pantalla.append("Error en el envío\n"); pantalla.append("Error="+ex+"\n"); captura.setText(""); } } }); } public void iniciarSocket(){ try { socketEnvia = new DatagramSocket(); socketRecibe = new DatagramSocket(5000); } catch (SocketException se){ System.out.println("Error de socket"); System.exit(0); } } public void checarPaquetes() { while (true){ try { byte array[] = new byte[100]; paqRecibido = new DatagramPacket(array,array.length); socketRecibe.receive(paqRecibido); String recibido = new String(paqRecibido.getData()); host = paqRecibido.getAddress(); pantalla.append(host.getHostName()+": "+recibido+"\n"); } } } catch (Exception ex){ pantalla.append("Error en la recepcion\n"); pantalla.append("Error="+ex+"\n"); } } public class UsoServidorUDP { public static void main(String[] args){ ServidorUDP s = new ServidorUDP(); s.checarPaquetes(); } } Cliente UDP import import import import java.net.*; java.io.*; java.awt.*; java.awt.event.*; class ClienteUDP extends Frame { private TextArea pantalla; // private TextField captura; // private InetAddress host; // private String servidor; // private DatagramPacket paqEnviado; // private DatagramPacket paqRecibido; // private DatagramSocket socketEnvia; // private DatagramSocket socketRecibe;// Area de despliegue de mensajes Area de captura de mensajes Direccion IP del servidor Nombre del servidor Paquete que se envia al Servidor Paquete que se recibe del Serv. Socket de Envio Socket de Recepcion public ClienteUDP(String servidor){ super("Cliente"); this.servidor = servidor; setSize(400,300); addComponentes(); addEventos(); setVisible(true); } public void addComponentes(){ Panel p = new Panel(); Label mensaje = new Label("Captura el mensaje"); captura = new TextField(20); p.add(mensaje); p.add(captura); add("North",p); pantalla = new TextArea(20,10); add("Center",pantalla); } public void addEventos(){ addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); captura.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ try{ pantalla.append("Cliente: "+captura.getText()+"\n"); byte array[] = new byte[100]; array = captura.getText().getBytes(); paqEnviado = new DatagramPacket(array,array.length, host,5000); socketEnvia.send(paqEnviado); captura.setText(""); } } } catch (Exception ex) { pantalla.append("Error en el envío\n"); pantalla.append("Error="+ex+"\n"); captura.setText(""); } }); public void iniciarConexion(){ try { socketEnvia = new DatagramSocket(); socketRecibe = new DatagramSocket(5001); host = InetAddress.getByName(servidor); } catch (SocketException se){ System.out.println("Error de socket"); System.exit(0); } catch (UnknownHostException e){ System.out.println("Servidor Desconocido"); System.exit(0); } } public void esperarPaquetes(){ while (true){ try { byte array[]= new byte[100]; paqRecibido = new DatagramPacket(array,array.length); socketRecibe.receive(paqRecibido); InetAddress recibe = paqRecibido.getAddress(); byte data[] = paqRecibido.getData(); String recibido = new String(data); pantalla.append(recibe.getHostName()+": "+recibido+"\n"); } catch (IOException ex){ pantalla.append("Error en la recepcion\n"); pantalla.append("Error="+ex+"\n"); } } } } public class UsoClienteUDP { public static void main(String [] args) { ClienteUDP s = new ClienteUDP("172.16.0.224"); s.iniciarConexion(); s.esperarPaquetes(); } }