Descargar la presentación
La descarga está en progreso. Por favor, espere
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
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
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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.