La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Andres Marín L. Programación sockets en java.

Presentaciones similares


Presentación del tema: "Andres Marín L. Programación sockets en java."— Transcripción de la presentación:

1 Andres Marín L. amarin@udea.edu.co Programación sockets en java

2 Las aplicaciones en Internet usan el modelo cliente servidor. Introducción

3 Arquitectura TCP/IP

4 El nivel de aplicación se soporta sobre el nivel de transporte para usar la red. El mecanismo de puertos del nivel de transporte permite diferenciar cualquier comunicación entre cualquier par de computadores. El desarrollador decide si le conviene más TCP o UDP para su desarrollo. Cliente Servidor

5 Tramas UDP y TCP

6 Un servidor es un programa que normalmente se queda corriendo indefinidamente pendiente de atender las solicitudes de los clientes. (Demonio o Servicio)‏ asocia El servidor se asocia a un puerto específico que será usado por el cliente para contactarlo. ServicioPuerto Web-http80/TCP email-smtp25/TCP SSH22/TCP DNS53/UDP Servidor

7 puerto Un cliente solicita conexiones a un servidor mediante un puerto predeterminado. Cliente

8 A es un Cliente Web / B es un Servidor Web

9 Es un API (application program interface) para el desarrollo de programas de comunicaciones sobre TCP/IP ó Unix. Originalmente se creó para Unix y Lenguaje C pero hoy en día se puede usar desde muchos lenguajes de programación sobre cualquier sistema operativo. Sockets

10 Que es un socket? Desde el punto de vista de programación, un socket nos da la “manija” con la cual podemos hacer uso de un extremo de la comunicación ya sea en el rol de cliente o de servidor. Es análogo a un descriptor de un archivo cuando hacemos uso de operaciones de I/O. Un socket permite identificar con quien estamos comunicándonos Qué es un socket?

11 Se pueden desarrollar aplicaciones que usen los protocolos TCP, UDP e IP. Igualmente se puede trabajar directamente sobre la interface de red. Qué tipos de aplicaciones se pueden desarrollar con el API sockets?

12 El protocolo UDP es no orientado a conexión, por lo tanto, no se requiere hacer un procedimiento especial de conexión o cierre de la misma. Se requiere importar estas librerías: import java.net.*; import java.io.*; Aplicaciones UDP

13 1. Declarar un socket DatagramSocket socket; 2. Definir el puerto por el que se reciben las conexiones y asociar el socket. static final int serverPort = 6666; socket = new DatagramSocket(serverPort); Esquema de un servidor UDP

14 3. Definir un buffer de recepción de paquetes (datagramas UDP)‏ DatagramPacket packet; packet = new DatagramPacket(data,packetSize); 4. Loop infinito esperando y leyendo datos. for(;;){ socket.receive(packet); …. Otras acciones dependiendo del servicio Esquema de un servidor en UDP. Continuación

15 Programa de ejemplo

16

17 Definir un buffer de envio de paquetes (datagramas UDP) y asociarlo a un puerto DatagramPacket packet; packet = new DatagramPacket(data,data.length,address,serverPort); Preparando la información. data = new byte[packetSize]; messageSend = new String(args[1]); messageSend.getBytes(0,messageSend.length(),data,0); Esquema del cliente

18 Intercambio de información. socket.send(packet); socket.receive(packet); Esquema del cliente. Continuación

19 Programa de ejemplo

20

21 El protocolo TCP es orientado a conexión, por lo tanto, se requiere hacer un procedimiento especial de conexión y cierre de la misma. Se requiere importar estas librerías: import java.net.*; import java.io.*; Aplicaciones con TCP

22 Declaramos un socket servidor y lo asociamos a un puerto ServerSocket serverSocket = null; serverSocket = new ServerSocket(4444); Declaramos un socket cliente donde esperamos a un cliente que se desee conectar con el servidor Socket clientSocket = null; clientSocket = serverSocket.accept(); Esquema del Servidor

23 Intercambio de información – Declaración de un buffer de lectura del canal BufferedReader entrada = new BufferedReader( new InputStreamReader(clientSocket.getInputStream())); – Declaracción de un buffer de escritura sobre el canal PrintWriter salida = new PrintWriter(clientSocket.getOutputStream(), true); – Escribir al canal String linea = "Dialogue client/server"; salida.println(linea); – Leer del canal while ((linea = entrada.readLine()) != null)‏ salida.println("(Server) Usted dijo: " + linea); Esquema del Servidor. Continuación

24 Programa de ejemplo

25 Declaramos un socket que usará el cliente para la conexión Socket echoSocket = null; Asociamos el socket a un puerto y dirección ip remota del servidor. Puede ser necesario convertir un nombre de maquina a dirección IP. Consultar métodos: InetAddress, getLocalHost, getByAddress, getByName, etc InetAddress direccion; direccion = InetAddress.getLocalHost(); echoSocket = new Socket(direccion, 4444); Esquema del Cliente

26 Intercambio de información –Declaramos un buffer de salida y otro de entrada PrintWriter salida = null; BufferedReader entrada = null; salida =new PrintWriter(echoSocket.getOutputStream(), true); entrada = new BufferedReader(new InputStreamReader(echoSocket.getInputStre am())); –Se hacen lecturas fromServer = entrada.readLine()‏ –Se hacen escrituras salida.println(fromUser)‏ Esquema del Cliente. Continuación

27 Programa de ejemplo


Descargar ppt "Andres Marín L. Programación sockets en java."

Presentaciones similares


Anuncios Google