UNIDAD IV.- Comunicación con Java Manejo de IP Clase

advertisement
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();
}
}
Descargar