Investigación Progra
Investigación Progra
Investigación Progra
Sockets en Java
Los sockets son bsicamente formas en las que podemos interconectar 2 (o ms)
programas mediante el uso de la internet. En java se utilizan para poder crear conexiones
utilizando bsicamente una IP/hostname y un puerto para establecer la conexin.
Cmo funciona?
El modelo ms bsico de los sockets consta de 2 simples programas, un servidor y
un cliente. Bsicamente el programa servidor comienza a escuchar en un puerto
determinado (nosotros lo especificamos), y posteriormente el programa que la hace de
cliente debe conocer la ip o nombre de dominio/hostname del servidor y el puerto que
est escuchando, al saber esto simplemente solicita establecer una conexin con el
servidor. Es aqu cuando el servidor acepta esa conexin y se puede decir que estos
programas estn conectados, de este modo pueden intercambiar informacin.
Este cdigo de un servidor muy simple hecho en Java, lo que hace es escuchar el puerto
5000, cuando un cliente se conecta este enva un mensaje de confirmacin al cliente, luego
el cliente al enviar su primer mensaje, el servidor enva un segundo mensaje y se cierra la
conexin. Tambin el de un cliente muy muy simple solo para que se vea la diferencia, de
cmo se pide la conexin al servidor, el cliente nicamente enva un mensaje de texto pero
no recibe informacin.
sc.close();
}catch(Exception e )
{
System.out.println("Error: "+e.getMessage());
}
}
}
//Inicia el socket, ahora esta esperando una conexin por parte del cliente
System.out.println("Un cliente se ha conectado.");
//Canales de entrada y salida de datos
entrada = new BufferedReader(new InputStreamReader(so.getInputStream()));
salida = new DataOutputStream(so.getOutputStream());
System.out.println("Confirmando conexion al cliente....");
salida.writeUTF("Conexin exitosa...n envia un mensaje :D");
//Recepcion de mensaje
mensajeRecibido = entrada.readLine();
System.out.println(mensajeRecibido);
salida.writeUTF("Se recibio tu mensaje.n Terminando conexion...");
salida.writeUTF("Gracias por conectarte, adios!");
System.out.println("Cerrando conexin...");
sc.close();//Aqui se cierra la conexin con el cliente
}catch(Exception e )
{
System.out.println("Error: "+e.getMessage());
}
}
}
Notas:
*Ambos programas (servidor y cliente) no necesitan estar programados en Java, es posible
programarlos en lenguajes de programacin diferentes, o inclusive programar un servidor
en java y utilizar un cliente ya existente que pueda conectarse a un puerto especificado.
*El cliente debe de conocer tanto el puerto a utilizar como la IP o dominio del servidor,
mientras el servidor solo debe conocer el puerto de conexin.