Diferencia entre revisiones de «Usuario:ManuelRomero/net»

De WikiEducator
Saltar a: navegación, buscar
(java.net.ServerSocket)
(=Constructores)
Línea 99: Línea 99:
 
  Socket comunicacionCliente = new ServerSocket();
 
  Socket comunicacionCliente = new ServerSocket();
 
  comunicacioneCliente = servidor.accept();
 
  comunicacioneCliente = servidor.accept();
=====Constructores====
+
====Constructores====
 
  public ServerSocket (int puerto) thows IOExcpetion
 
  public ServerSocket (int puerto) thows IOExcpetion
 
  public ServerSocket (int puerto, int longitudCola) thows IOExcpetion
 
  public ServerSocket (int puerto, int longitudCola) thows IOExcpetion

Revisión de 10:08 11 may 2012

Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg




Comunicaciones y redes

Conceptos básicos de redes



Icon define.gif

Definición

'Red' Conjunto de dispositivos interconectados con la capacidad de intercambiar y compartir recursos


  • Idea de malla o red de pescar
  • Puedo ir de un nodo o dispositivo a cualquier otro nodo o dispositivo sin abandonar la red
  • Existen diferentes tipos de redes
    • La más conocida y usada la red de tipo Tcp/ip o red de internet (red de redes)
  • Necesidad de indentificar de forma única cada dispositivo de la red
  • Necesidad de que el emisor conozca la identificación del dispositivo o nodo con el que quiere contactar

Términos usados en redes

  • Protocolo: Un programa que implementa la comunicación entre dos elementos
    • A nivel de aplicación lo invoca el usuario
    • A otro nivel es parte del kernel del SO
  • Servicio
  • Modelo de referencia: 'Capas del modelo'
  • Este tema está desarrollado de forma más detellada en muchos sitios
  • Puedes acceder al siguiente url para poder ver apuntes de Cisco sobre la red y los protocolos

http://curriculum.netacad.net/virtuoso/servlet/org.cli.delivery.rendering.servlet.CCServlet/LMS_ID=CNAMS,Theme=ccna3theme,Style=ccna3,Language=es,Version=1,RootID=knet-lcms_exploration1_es_40,Engine=static/CHAPID=null/RLOID=null/RIOID=null/index.html


Podemos ver el siguiente corto para entender un poco más de redes

http://www.youtube.com/watch?v=XeldfbDijUY&feature=related


Icon define.gif

Definición

Protocolo conjunto de reglas y normas establecidas para que dos partes se puedan entender


  • Ejemplo: Un director chino quiere hacer un negocio con un director alemán, entre ellos directamente no se puede entender:

Modelo de referencia OSI Vs TCP/IP

ModeloReferencia.png

  • PDU Información de cada una de las capas
  • Cabecera Datos que permiten que cada capa realice su cometido
  • Aplicacion Interactúa con el usuario, DNS, HTTP
  • Transporte TCP UDP Puerto
  • Red|Internet IP (ICMP, ARP/RARP) Direcciones IP (red/host) Enrutar: encontrar el camino para llegar a alcanzar la red destino
  • Enlace|Acceso al medio Ethernet, Token Ring, Frame Relay (tecnologías de red) Trama Direcciones MAC Cola Verificar validez de la trama


Icon objectives.jpg

Objetivo

nuestro objetivo: Capa de Transporte Para poder hacer los probramas


Capas del modelo OSI

Proceso de encapsulacion y desencapsulacion

Modelo TCP/IP

Concepto de socket y capa de transporte

En la capa de transporte tenemos dos protocolos
TCP Seguro, orientado a la conexion y con control de flujo, lento y pesado
UDP rápidlo, ligero, no seguro, no orientado a la conexión sin control de flujo

Ambos identifican con un puerto la aplicación/conversación concreta a la que va destinada el paquete

Socket
  • Representa los terminales de la conexión entre dos máquinas o servicios
  • Estos terminales se unen por la red física de la cual no tenemos porque saber absolutamente nada

Socket1.png

  • Los socket son creados por el sistema operativo
  • El API de java java.net y java.nio tienen métodos para que el programa pueda invocar al SO para que cree un socket
  • el socket tiene métodos para poder envier mensajes a otras aplicciones las cuales los recibierán en su socket

Socket2.png

  • La aplicacion tiene métodos para que el so cree un socket para usar
  • Existen dos tipos de socket
  1. socket activos
Se conecta con el servidor, envía y recibe datos, se ubican tanto en el cliente como en el servidor)
  1. socket pasivos
Esperan conexiones de los clientes y se ubican al lado del servidor
  • Un socket tiene información que le identifica
  1. Puerto
  2. Direccion IP
  3. Tipo de protocolo

Clases de java para socket

UDP
DatagramPacket Para crear datagramas UDP
MulticastSocket
DatagramaSocket: Hereda del anterior permite crear un socket para enviar informción
TCP
Socket
ServerSocket
Ambos para manipulación de direcciones de internet
URL
URLEncoder
InetAddress

java.net.Socket

Crea un socket con la capacidad de envier y transmitir datos

Constructores

protected Socket() throws SocketException
protected Socket() 
public Socket(String host, int puerto) throws UnknownHostException,    
IOException
public Socket(InetAddress direccion, int puerto)throws  IOException
public Socket(String host, int puerto,InetAddress dirLocal, int  
puertoLocal) throws IOException 
public Socket(String host, int  puerto) throws UnknownHostException, 
IOException

java.net.ServerSocket

Crea un socket en el servidor socket pasivo Este se queda esperando a que llegue una solicitud de conexión con otro socket de cliente socket activo Esto se hace invocando al método accept()

ServerSocket servidor = new ServerSocket()
Socket comunicacionCliente = new ServerSocket();
comunicacioneCliente = servidor.accept();

Constructores

public ServerSocket (int puerto) thows IOExcpetion
public ServerSocket (int puerto, int longitudCola) thows IOExcpetion
public ServerSocket (int puerto, int longitudCola, InetAdress 
dirInternet) thows IOExcpetion

Pasos para realizar una aplicación clinete/servidor con TCP

  1. Se deben crear socket en el cliente (activos) y en el servidor (pasivos)
  2. El socket servidor se crea en un puerto que será el que establezca la conexión para la aplicación
  3. El socket pasivo se queda esperando o escuchando a que lleguen solicitudes por parte de otro socket activo por el puerto establecido (Sólo escucha ese puerto)
  4. El cliente lanza una solicitud de conexión al servidor
  5. El servidor acepta la solicitud (eso es lo esperado :))
  6. Se realizan intercambio de datos
  7. Se cierran las conexiónes

Identificadon un dispositivo de red

  • Direccion IP
  • URL Localizador Unico de Recurso

Formato para identificar un recurso en la red

  servicio://maquina.dominio:puerto/camino/fichero
Servicio
Identifica el protocolo que vamos a usar para acceder
máquina.dominio
Identifica el nombre de la máquina dentre de un subdominio de un dominio o directamente dentro de un dominio
Camino
Es el path dentro de la máquina donde se ubica el recurso
Fichero
El recurso al que quiero acceder



Clases de java para desarrollo de comunicaciones

Paquete java.net java.nio
Clases para el API con socket del SO
ServerSocket ==> Permite definir socket pasivos
Socket ==>Permite definir socket activos
Clases para trabajar con URL
URL
InetAddress ==>
Excepciones
ServerException
UnknownServiceException
UnknownHostException

Ejemplo 1

Implementar un programa que me de información del host al que me conecto vía http

import java.io.*;
import java.net.*;
 
public class ConexionWeb {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Socket socket = null;
		try{
			InetAddress direccion = InetAddress.getByName("eina.unizar.es");
			System.out.println(direccion);
			socket = new Socket(direccion,80);
			System.out.println("Conectado a "+socket.getInetAddress());
			System.out.println("Puerto destino  :"+socket.getPort());
			System.out.println("Puerto origen  "+socket.getLocalPort());
			System.out.println("Y la direccon loncal "+socket.getLocalAddress());
		}catch(UnknownHostException e){
			System.out.println("No se ha podido encontrar el host destino");
		}catch(IOException e){
			System.out.println("Error creaando el socket" +e.getMessage());
		}
	}
 
}