Sockets java
SISTEMAS DISTRIBUIDOS
“COMUNICACION A TRAVES DE SOCKETS”
PROF. ARMANDO JIMENEZ FLORES JORGE MEDRANO HERRERA DIANA RUELAS CAMACHO INGENIERIA EN COMPUTACION
Un socket es un fichero existente en la máquina cliente y en la máquina servidora, que sirve en última instancia para que el programa servidor y el cliente lean y escriban la información. Esta información será la transmitida por las diferentes capas de red. Para que dos programas puedan comunicarse entre sí es necesario que se cumplan ciertos requisitos: • Que un programa sea capaz de localizar al otro. • Que ambos programas sean capaces de intercambiarse cualquier secuencia de octetos, es decir, datos relevantes a su finalidad. Para ello son necesarios los tres recursos que originan el concepto de socket: • Un protocolo de comunicaciones, que permite el intercambio de octetos. • Una dirección del Protocolo de Red (Dirección IP, si se utiliza el Protocolo TCP/IP), que identifica una computadora. • Un número de puerto, que identifica a un programa dentro de una computadora. Los sockets permiten implementar una arquitectura clienteservidor. La comunicación ha de ser iniciada por uno de los programas que se denomina programa cliente. El segundo programa espera a que otro inicie la comunicación, por este motivo se denomina programa servidor. Las propiedades de un socket dependen de las características del protocolo en el que se implementan. El protocolo más utilizado es Transmission Control Protocol, aunque también es posible utilizar UDP o IPX. Gracias al protocolo TCP, los sockets tienen las siguientes propiedades: • Orientado a conexión. • Se garantiza la transmisión de todos los octetos sin errores ni omisiones. • Se garantiza que todo octeto llegará a su destino en el mismo orden en que se ha transmitido. Estas propiedades son muy importantes para garantizar la corrección de los programas que tratan la información. El protocolo UDP es un protocolo no orientado a la conexión. Sólo se garantiza que si un mensaje llega, llegue bien. En ningún caso se garantiza que llegue o que lleguen todos los mensajes en el mismo orden que se mandaron. Esto lo hace adecuado para el envío de mensajes frecuentes pero no demasiado importantes, como por ejemplo, mensajes para los refrescos de un gráfico.
SERVIDOR
1 package servidor; 2 import java.io.*; 3 import java.net.*; 4 public class Main { 5 static final int PUERTO=5000; 6 public Main(){ 7 try{ 8 ServerSocket skServidor = new ServerSocket(PUERTO); 9 System.out.println("Escucho el puerto "+PUERTO); 10 int numCli=0; 11 while (numCli++!=3){ 12 Socket skCliente=skServidor.accept(); 13 System.out.println("Sirvo al cliente "+ numCli); 14 OutputStream aux= skCliente.getOutputStream(); 15 DataOutputStream flujo=new DataOutputStream(aux); 16 flujo.writeUTF("Hola cliente "+numCli);17 skCliente.close(); 18 } 19 System.out.println("Demasiados clientes por hoy, adios"); 20 } catch (Exception e){ 21 System.out.println(e.getMessage()); 22 } 23 } 24 25 public static void main(String[] args) { 26 new Main(); 27 } 28 } 1: Es el paquete al cual pertenece nuestra clase Main2: Se importan las librerías de java para entrada y salida 3: Se importan las librerías de java para internet 4: Se declara la clase publica Main 5: Se declara una variable de tipo int final llamada PUERTO con valor de 5000 6: Se declara un método constructor 7: Se intenta ejecutar código con un try 8: Se crea un objeto de la clase ServerSocket que sirve para esperar las conexiones...
Regístrate para leer el documento completo.