La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

1 Introducción a las Comunicaciones en Red. import java.net.InetAddress; import java.net.UnknownHostException; public class PruebaSockets { public static.

Presentaciones similares


Presentación del tema: "1 Introducción a las Comunicaciones en Red. import java.net.InetAddress; import java.net.UnknownHostException; public class PruebaSockets { public static."— Transcripción de la presentación:

1 1 Introducción a las Comunicaciones en Red

2 import java.net.InetAddress; import java.net.UnknownHostException; public class PruebaSockets { public static void main(String[] args) { try { System.out.println("URL & Direccion IP: " ); InetAddress direccion = InetAddress.getByName("www.udistrital.edu.co"); System.out.println(direccion); System.out.println("Direccion IP: " ); int temp = direccion.toString().indexOf('/'); direccion = InetAddress.getByName(direccion.toString().substring(temp + 1)); System.out.println(direccion); System.out.println("Nombre & Direccion IP actual de LocalHost" ); direccion = InetAddress.getLocalHost(); System.out.println(direccion);

3 System.out.println("Direccion IP del LocalHost: " ); temp = direccion.toString().indexOf('/'); direccion = InetAddress.getByName(direccion.toString().substring(temp + 1)); System.out.println(direccion); System.out.println("Nombre actual de LocalHost" ); System.out.println(direccion.getHostName()); System.out.println("Direccion IP actual de LocalHost" ); byte[] bytes = direccion.getAddress(); for (int cnt = 0; cnt < bytes.length; cnt++) { int uByte = bytes[cnt] < 0 ? bytes[cnt] + 256 : bytes[cnt]; System.out.print(uByte + " "); } System.out.println(); } catch (UnknownHostException e) { System.out.println(e); System.out.println("Debes estar conectado para que esto funcione bien."); }

4

5

6 Cada paquete enviado por una capa se compone de control + datos El conjunto control + datos de una capa viaja en los datos de la capa superior

7

8

9

10 La comunicación entre procesos a través de sockets se basa en la filosofía CLIENTE - SERVIDOR

11 Tipos de Sockets Socket de flujo (orientado a conexión): al conectar se realiza una búsqueda de un camino libre entre origen y destino. Se mantiene el camino en toda la conexión Socket de datagrama (no orientado a conexión): no se fija un camino. Cada paquete podrá ir por cualquier sitio. No se garantiza la recepción secuencial

12 Sockets Orientados a la Conexión

13

14 1.Cada socket debe tener asignada una dirección única Dirección de host (32 bits) + puerto (16 bits)+protocolo 2.Las direcciones se usan para: Asignar una dirección local a un socket (bind) Especificar una dirección remota (connect o sendto) 3.Las direcciones son dependientes del dominio 4.Cada dominio usa una estructura específica Direcciones en AF_UNIX (struct sockaddr_un) Direcciones en AF_INET(struct sockaddr_in) Direcciones de Sockets

15 Números de puerto Algunos conocidos: ftp: 20 y 21 telnet: 23 SMTP: 25 Time: 37 www-http: 80 Rangos: Puertos en una máquina ~ 65536 puertos posibles 1.Reservados por la IANA para aplicaciones de Internet: 0-1023 (también llamados well-known puertos) 2.Puertos entre 1024 y 49151 son puertos registrados para ser usados por los servicios 3.Puertos por encima de 65535 para uso privado

16 En la parte del servidor se tiene: public final class java.net.ServerSocket extends java.lang.Object A) Constructores : public ServerSocket (int port) throws IOException Se crea un socket local al que se enlaza el puerto especificado en el parámetro port, si se especifica un 0 en dicho parámetro creará el socket en cualquier puerto disponible. Puede aceptar hasta 50 peticiones en cola pendientes de conexión por parte de los clientes. public ServerSocket (int port, int count) throws IOException Aquí, el parámetro count sirve para que puede especificarse, el número máximo de peticiones de conexión que se pueden mantener en cola.

17 B) Métodos : public Socket accept () throws IOException Sobre un ServerSocket se puede realizar una espera de conexión por parte del cliente mediante el método accept(). El proceso espera a que se realice una conexión por parte del cliente para seguir su ejecución. Una vez que se ha establecido una conexión por el cliente, este método devolverá un objeto tipo Socket, a través del cual se establecerá la comunicación con el cliente. public void close () throws IOException Se encarga de cerrar el socket. public InetAddress getInetAddress () Retorna la dirección IP remota a la cual está conectado el socket. Si no lo está retornará null. public int getLocalPort () Retorna el puerto en el que está escuchando el socket. public String toString( ) Retorna un string representando el socket

18 En la parte del cliente : public final class java.net.Socket extends java.lang.Object A) Constructores : public Socket (InetAddress address, int port) throws IOException Crea un StreamSocket y lo conecta al puerto remoto y dirección IP remota especificados. public Socket (InetAddress address, int port, boolean stream) throws IOException Ídem a la anterior incluyendo el parámetro booleano stream que si es true creará un StreamSocket y si es false un DatagramSocket (En desuso). public Socket (String host, int port) throws UnKnownHostException, IOException Crea un StreamSocket y lo conecta al número de puerto y al nombre de host especificados. public Socket (String host, int port, boolean stream) throws IOException Ídem al anterior incluyendo el parámetro booleano stream que si es true creará un StreamSocket y si es false un DatagramSocket (En desuso).

19 B) MÉTODOS : public void close() throws IOException Se encarga de cerrar el socket. public InetAddress getInetAddress () Retorna la dirección IP remota a la que se conecta el socket. public InputStream getInputStream () throws IOException Retorna un input stream para la lectura de bytes desde el socket. public int getLocalPort()Retorna el puerto local al que está conectado el socket. public OutputStream getOutputStream () throws IOException Retorna un output stream para la escritura de bytes hacia el socket. public int getPort () Retorna el puerto remoto al que está conectado el socket.

20 Ejemplo Cliente Servidor

21 import java.io.*; import java.net.*; class Servidor { int PUERTO = 5000; public Servidor() { try { ServerSocket sServidor = new ServerSocket(PUERTO); System.out.println("Servidor --> Puerto de Escucha: " + PUERTO); for (int numCli = 0; numCli < 3; numCli++) { Socket sCliente = sServidor.accept(); // Crea objeto System.out.println("Sirvo al cliente " + numCli); OutputStream aux = sCliente.getOutputStream();

22 DataOutputStream flujo = new DataOutputStream(aux); flujo.writeUTF("Cliente No.: " + numCli + " Direccion IP Cliente: "+sCliente.getInetAddress()); sCliente.close(); } System.out.println("Demasiados clientes por hoy"); } catch (Exception e) { System.out.println(e.getMessage()); } public static void main(String[] arg) { new Servidor(); }

23 import java.io.*; import java.net.*; class Cliente { String HOST = "localhost"; int PUERTO = 5000; public Cliente() { try { Socket sCliente = new Socket(HOST, PUERTO); InputStream aux = sCliente.getInputStream(); DataInputStream flujo = new DataInputStream(aux); System.out.println(flujo.readUTF()); sCliente.close(); } catch (Exception e) { System.out.println(e.getMessage()); } public static void main(String[] arg) { new Cliente(); }

24

25 Ejercicio Usando sockets orientados a la conexión, codificar una aplicación cliente-servidor donde los procesos clientes envíen dos números separados por un carácter, y el servidor muestre el resultado de una suma


Descargar ppt "1 Introducción a las Comunicaciones en Red. import java.net.InetAddress; import java.net.UnknownHostException; public class PruebaSockets { public static."

Presentaciones similares


Anuncios Google