Resumen T4 Pas de missatges (2015)

Resumen Español
Universidad Universidad Politécnica de Cataluña (UPC)
Grado Ciencias y Tecnologías de Telecomunicación - 2º curso
Asignatura AST
Año del apunte 2015
Páginas 5
Fecha de subida 23/02/2015
Descargas 63
Subido por

Vista previa del texto

Carlos Angulo AST Resum T4 T4 Pas de missatges Dos actors • Client : llança peticions al servidor (dir IP) i al seu port • Servidor: espera les connexions del client Una vegada establerta la connexió es tracta como un stream (flux) típica de entrada/sortida.
Se redueix a dos mètodes • Enviar /Escriure • Rebre /Llegir El paquet Java.net proporciona comunicació de xarxa independent de l’ordinador Les classes que té permeten utilitzar TCP o UDP per comunicar-se mitjançant internet.
El paquet java.io s’utilitza per llegir i escriure dades: InputStream y OutputStream Ordre Open Read write Classes de java.net Protocol URL, URLConnection, Socket y SocketServer TCP DatagramPacket DatagramServer UDP close Sockets Model Client Servidor T1 Socket Client Socket: canal de comunicació.
Si es vol establir comunicació entre T1 i T2 inicialment, un dels dos s’ha d’esperar T2 ServerSocket Host Host Servidor accept El servidor (ServerSocket) adopta un paper inicial pasiu i espera connexions dels clients El cliente (Socket) adoptará un paper inicial actiu sol·licitant conexions al servidor Accept retorna un socket amb una connexió bidireccional establerta En Servidor Constructors 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 backlog) 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.
Mètodes 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(). Hay que decir, que este método es de bloqueo, 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.
En Client Constructors 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 (String host, int port) throws UnKnownHostException, IOException Crea un StreamSocket y lo conecta al número de puerto y al nombre de host especificados.
Resumen AST 1 Carlos Angulo AST Podemos crear una interfacie para las constates: Mètodes Client També té mètodes de Servidor public InputStream getInputStream () throws IOException Retorna un input stream para la lectura de bytes desde 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.
Envio i recepció a traves de Sockets Servidor Clientes ServerSocket(port#,timeout)Accept Socket( host,port#) outPutStream inputStream outPutStream inputStream close() close() Creació de Streams El servidor creará un socket, utilizando ServerSocket, le asignará un puerto y una dirección,una vez haga el accept para esperar llamadas, se quedará bloqueado a la espera de las mismas. Una vez llegue una llamada el accept creará un Socket para procesarla.
Para poder leer y escribir datos, los sockets disponen de unos stream asociados • Uno de entrada (InputStream) • Otro de salida (OutputStream) respectivamente.
Cuando se implementa un servidor se necesita crear un objeto Socket a partir del ServerSocket, para que éste continúe ateniendo las conexiones que soliciten potenciales nuevos clientes y poder servir al cliente, recién conectado, a través del Socket creado Entrada: Sempre amb DataInputStream Entrada i DataOutputStream com a sortida Entrada i PrintStream com a sortida Igual per al client y servidor En el servidor trabajamos con socketReceptor La clase DataInputStream permite la lectura de líneas de texto y tipos de datos primitivos de Java de un modo altamente portable; dispone de métodos para leer todos esos tipos como: • • • • • • La clase PrintStream tiene métodos para la representación textual de todos los datos primitivos de Java. No obstante, para el envío de información al servidor también podemos utilizar DataOutputStream: write println() La clase DataOutputStream permite escribir cualquiera de los tipos primitivos de Java, muchos de sus métodos escriben un tipo de dato primitivo en el stream de salida.
• • • • • • • read(byte b[]) throws IOExceptionreadChar() int readInt() throws IOException float readFloat() throws IOException double readDouble() throws IOException String readLine() throws IOException String readUTF() throws IOException writeBoolean(boolean v) throws IOException writeInt(Int v) throws IOException writeFloat(float v) throws IOException writeDouble(double v) throws IOException writeBytes(String s) throws IOException writeChars(String s) throws IOException writeUTF(String str) throws IOException Cierre de sockets En el servidor cerramos: • El serverSocket • El Socket receptor Resumen AST 2 Carlos Angulo AST Lectura datos teclado Lectura String Lectura Int Lectura datos sockets Podemos trabajar • Con el String peticionIn para gestionar lo que nos pide el cliente • Con el int numIn para cantidades que nos de el usuario Pas de missatges Síncron Enviar(m) Pas de missatges Asíncron Enviar(m) El rebre sempre és bloquejant m m m m=rebre(m) m=rebre(m) Servidor MultiThread Podemos hacer que un servidor atienda a más de un cliente mediante la creación de un Thread para cada uno de ellos que se desea conectar Cada vez que recibimos la conexión de un socket creamos un Thread de una clase que representa al servidor (ReceptorClientes) y gestiona a cada socket recibido Resumen AST 2 Carlos Angulo AST Servidor MultiThread Podemos hacer que un servidor atienda a más de un cliente mediante la creación de un Thread para cada uno de ellos que se desea conectar Cada vez que recibimos la conexión de un socket creamos un Thread de una clase que representa al servidor (ReceptorClientes) y gestiona a cada socket recibido Cliente Servidor Resumen AST 2 Carlos Angulo AST Servidor MultiThread ReceptorCliente Resumen AST 2 ...