jueves, 10 de octubre de 2013

jueves, 3 de octubre de 2013

Sockets en Java

Los sockets son un sistema de comunicación entre procesos de diferentes máquinas de una red. Más exactamente, un socket es un punto de comunicación por el cual un proceso puede emitir o recibir información.

Fueron popularizados por Berckley Software Distribution, de la universidad norteamericana de Berkley. Los sockets han de ser capaces de utilizar el protocolo de streams TCP (Transfer Contro Protocol) y el de datagramas UDP (User Datagram Protocol).

Utilizan una serie de primitivas para establecer el punto de comunicación, para conectarse a una máquina remota en un determinado puerto que esté disponible, para escuchar en él, para leer o escribir y publicar información en él, y finalmente para desconectarse.

Aquí dejo el código, para crear un socket utilizando Java. Es de notarse, la existencia de cuatro clases. La cliente, la servidor, el Core y la principal.

import java.io.ObjectInputStream;
import java.net.Socket;


public class Cliente {

private Socket s;
private ObjectInputStream ois;

public Cliente() {

try{
s = new Socket("localhost", 9998);
ois = new ObjectInputStream(s.getInputStream());
System.out.println((String)ois.readObject());
ois.close();
s.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}

}

import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Servidor {
private ServerSocket ss;
private Socket s;
private ObjectOutputStream oos;
public Servidor() {
try{
ss = new ServerSocket(9998);
s = ss.accept();
oos = new ObjectOutputStream(s.getOutputStream());
oos.writeObject("Bienvenido cliente !");
oos.close();
s.close();
ss.close();
} catch(Exception ex) {
ex.printStackTrace();
}
}

}
import java.util.Scanner;

public class Core {

public Core() {
Scanner teclado = new Scanner(System.in);
System.out.println("\t1.- Servidor\n\t 2.- Cliente");
Integer op = (Integer)teclado.nextInt();
if (teclado!=null) {
if(op.equals(1)) {
Servidor s = new Servidor();
} else if (op.equals(2)) {
Cliente c = new Cliente();
}
}
}
}