Programación Orientada a Objetos II Programación para Redes Conceptos generales de redes ● En la Internet, las computadoras se comunican entre sí utilizando uno de los siguientes protocolos: – Transmission Control Protocol (TCP) – User Datagram Protocol (UDP) Programas en Java El protocolo determinará las clases que se utilizarán. Transmission Control Protocol (TCP) ● ● Cuando se quieren comunicar confiablemente dos aplicaciones, éstas establecen una conexión y envían datos por esta conexión. Análogo a realizar una llamada telefónica. Transmission Control Protocol (TCP) ● ● TCP provee un canal punto a punto para aplicaciones que requieren una comunicación confiable. TCP garantiza que los datos que se envían desde un punto lleguen al otro punto y en el órden que se enviaron. Si no se reporta un error. Aplicaciones de TCP ● Hypertext Transfer Protocol (HTTP) ● File Transfer Protocol (FTP) ● Telnet ¿Por qué? User Datagram Protocol (UDP) ● ● ● ● UDP es un protocolo que no garantiza la comunicación entre dos aplicaciones. No está basado en conexión. Envía paquetes de datos independientes conocidos como datagramas. Análogo a enviar una carta por correo. Puerto # Datos Datagrama (paquete UDP) Aplicaciones de UDP ● Ping ● DNS ● VoIP ● Video ¿Por qué? Puertos ● ● Los datos llegan a una computadora a través de una sola conexión de red. Los puertos se utilizan para identificar la aplicación a la que debe dirigirse cada dato que llega por la conexión de red. Puertos Aplicación A Puerto # 1 Aplicación B Puerto # 3 Aplicación C Puerto # 8 Aplicación D Puerto # 9 Protocolo: TCP Puerto: 8 Computadora 2 Aplicación X Puerto # n Computadora 1 Puertos ● ● ● Los puertos del 0 – 1023 están reservados para servicios conocidos como HTTP (80), FTP (20 y 21) y otros servicios. Se conocen como well-known ports. No se deben utilizar para otros propósitos en las applicaciones. El paquete java.net ● El paquete java.net del API de Java incluye las clases necesarias para establecer conexiones, crear servidores, enviar y recibir datos, y para el resto de las operaciones utilizadas en las comunicaciones a través de redes de computadoras. Cecilia M. Curlango Rosas 11/23 El paquete java.net ● Las siguientes clases del paquete java.net se utilizan para trabajar con TCP: – URL – URLConnection – Socket – ServerSocket Cecilia M. Curlango Rosas 12/23 El paquete java.net ● Las siguientes clases del paquete java.net se utilizan para trabajar con UDP: – DatagramPacket – DatagramSocket – MulticastSocket Cecilia M. Curlango Rosas 13/23 URLs ● ● Uniform Resource Locator (URL) es una referencia (una dirección) a un recurso en la Internet. Un URL tiene dos partes principales: – Identificador del protocolo – Nombre del recurso http : //yaqui.mxl.uabc.mx Cecilia M. Curlango Rosas 14/23 Ejemplos de protocolos ● Hypertext Transfer Protocol (HTTP) ● File Transfer Protocol (FTP) ● Gopher ● File ● News Cecilia M. Curlango Rosas 15/23 Recursos ● ● El nombre del recurso es su dirección completa. Para algunos protocolos, el nombre del recurso tiene: – Host name (nombre del servidor) – Filename (path y nombre del archivo) – Port number (generalmente opcional) – Reference (nombre de un área especifica dentro del archivo; opcional) Cecilia M. Curlango Rosas 16/23 La clase URL ● Crear una URL absoluta URL yaqui = new URL(“http://yaqui.mxl.uabc.mx/”); Cecilia M. Curlango Rosas 17/23 Cecilia M. Curlango Rosas 18/23 La clase URL ● Crear una URL relativa URL yaqui = new URL(“http://yaqui.mxl.uabc.mx/”); URL mapa = new URL(yaqui, “TemariosComputacion.pdf”); URL image = new URL(“http://yaqui.mxl.uabc.mx/images/”); URL temarios = new URL(image, “MAPA_PLAN_2003.jpg”); Cecilia M. Curlango Rosas 19/23 Clase URL Cecilia M. Curlango Rosas 20/23 MalformedURLException ● ● El constructor de URL genera una MalformedURLException si los argumentos del constuctor hacen referencia a un protocolo nulo o desconocido. Se recomienda atrapar la excepción con el código: try { URL myURL = new URL(. . .) } catch (MalformedURLException e) { . . . // exception handler code here . . . } Cecilia M. Curlango Rosas 21/23 Cecilia M. Curlango Rosas 22/23 Referencias y Ligas ● Networking basics http://download.oracle.com/javase/tutorial/networking/overview/networking.html ● ● ● ● Transmission Control Protocol http://en.wikipedia.org/wiki/Transmission_Control_Protocol User Datagram Protocol http://en.wikipedia.org/wiki/User_Datagram_Protocol Well-known ports http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers URL class - http://download.oracle.com/javase/7/docs/api/java/net/URL.html Cecilia M. Curlango Rosas 23/23