Está en la página 1de 12

Aplicaciones

Cliente Servidor
Desarrollo de aplicaciones TIC
Preparado por: Giovanni Fajardo Utria
Aplicaciones Cliente Servidor

Conceptos de NetWorking
Las computadoras que conectamos a Internet y se comunican entre sí lo hacen
utilizando un “protocolo” de comunicación que puede ser TCP (Transmission Control
Protocol) o UDP (User Datagram Protocol), Estos protocolos implementan lo que se
llama la “capa de transporte”.

Un protocolo de comunicaciones es un conjunto de normas que están obligadas a cumplir


todos las máquinas y programas que intervienen en una comunicación de datos entre
ordenadores sin las cuales la comunicación resultaría caótica y por tanto imposible.
Aplicaciones Cliente Servidor

TCP (Transmission Control Protocol)

Es un protocolo orientado a conexión que permite


conectar dos aplicaciones de manera confiable.
Una vez establecida la comunicación entre las Apps, se
crea un canal “bidireccional” a través del cuál cada una
de las partes puede enviar y recibir datos garantizando su
integridad en ambos extremos.
Las aplicaciones FTP, Telnet y HTTP utilizan TCP ya que
el orden en que se envía y reciben los datos es crítico.
Aplicaciones Cliente Servidor

Puertos (ports)
Una computadora tienen una única conexión física con la red a través de la cuál
recibe los datos que envía otra computadora. Los datos que llegan a este único punto
de entrada físico, internamente deben ser re direccionados a las diferentes
aplicaciones que los han requerido.
Los puertos constituyen una dirección relativa (interna) que direcciona una
aplicación o proceso dentro de una computadora, a través de la cual los datos que
llegan pueden ser redirigidos a las aplicaciones que correspondan.

Los números de puerto se indican mediante una palabra de un procesador de 16 bits, o sea,
de 2 bytes (16 bits), por lo que existen 65536 (del 0 al 65535).
Aplicaciones Cliente Servidor

Dirección IP
La dirección IP es un número de 32 bits que direcciona unívocamente una
computadora dentro de la red.

Una dirección IP es como un número telefónico o una dirección de una calle. Cuando te


conectas a Internet, tu dispositivo (computadora, teléfono celular, tableta) es asignado con
una dirección IP, así como también cada sitio que se visita tiene una dirección IP. ... Total
de espacio IPv4: 4,294,967,296 direcciones.
Aplicaciones Cliente Servidor

Aplicaciones cliente / servidor


Cuando se habla de este tipo de aplicaciones realmente se esta hablando de dos aplicaciones diferentes: la aplicación
cliente y la aplicación servidora (server).

En este esquema el server le provee servicios al cliente, ambas aplicaciones pueden correr en la misma computadora o en
computadoras diferentes.

Cliente internet Server


172.16.86.37 169.254.80.80
puertos puertos

controlador interfase
socket
interfase controlador mundo socket mundo

persistencia
Aplicaciones Cliente Servidor

Socket
Un socket es uno de los extremos existentes en la comunicación entre programas (procesos) a través de la red.
Un socket direcciona unívocamente un proceso en toda la red ya que incluye la dirección de host (IP) y la dirección de
proceso (port).

Cuando un programa necesita comunicarse con otro para enviar y recibir datos, se deben establecer dos socket, uno para
enviar y otro para recibir.

puertos puertos

Diferente equipo En el mismo equipo


ip cliente != ip server o ip cliente == ip server
socket

#port ( salida ) cliente == #port ( entrada ) server


Aplicaciones Cliente Servidor
puertos puertos

Socket para enviar texto socket

/* Client:Data >> socket >> Data:Server */


private void socket ( String msg )
{ try Se crea el socket
{ Socket client = new Socket ( ipServer, this.portSend ); // portSend 5000
Se define el tipo del flujo de datos (texto)
DataOutputStream outBuffer = new DataOutputStream (client.getOutputStream() );
outBuffer.writeUTF(msg);
client.close();
}
catch (UnknownHostException e)
{ JOptionPane.showMessageDialog(null, "socket() : UnknownHostException: " + e.getMessage()); }
catch (IOException e)
{ JOptionPane.showMessageDialog(null, "socket() : IOException: " + e.getMessage()); }
}
Aplicaciones Cliente Servidor
puertos puertos

Socket para enviar objetos socket

/* Client:Object >> socket >> Object:Server */


private void socket (myObject myObj)
{ try Se crea el socket
{ Socket client = new Socket( ipServer, this.portSend ); // portSend 5000
Se define el tipo del flujo de datos (objetos)
ObjectOutputStream outBuffer = new ObjectOutputStream(client.getOutputStream());
outBuffer.writeObject(myObj);
client.close();
}
catch (UnknownHostException e)
{ JOptionPane.showMessageDialog(null, "socket() : UnknownHostException: " + e.getMessage()); }
catch (IOException e)
{ JOptionPane.showMessageDialog(null, "socket() : IOException: " + e.getMessage()); }
}
Aplicaciones Cliente Servidor
implements Runnable
Thread
Socket para recibir texto / objetos puertos puertos

@Override
public void run()
{ ServerSocket serverSocket; socket
Socket socket;
ObjectInputStream inObjectBuffer ;

/* Data >> Server */


try inDataBuffer = new DataInputStream(socket.getInputStream());
{ server = new ServerSocket ( portListen ); // portListen 5000 Se crea el socket ctrl.toReceive(inDataBuffer.readUTF());

while (true)
{ socket = server.accept();

inObjectBuffer = new ObjectInputStream(socket.getInputStream());


try Se define el tipo del flujo de datos (objetos)
{ myObj = (myObject) inObjectBuffer.readObject();
ctrl.toReceive(objPackage.getNick() + " : " + objPackage.getIp() + " : " + objPackage.getMsg());
}
catch (ClassNotFoundException e)
{ ctrl.toException("run() : ClassNotFoundException: " + e.getMessage()); }
socket.close();
}
}
catch (IOException e)
{ //ctrl.toException("run() : IOException: " + e.getMessage()); }
}
Aplicaciones Cliente Servidor

Socket bidireccional

Cliente Server
172.16.86.37 169.254.80.80

portSend: 5000 portSend: 5050

portListen: 5050 portListen: 5000


Aplicaciones Cliente Servidor

Actividad en clase

Crear un hola mundo utilizando Sockets


 Crear la aplicación “client” que envía un mensaje de texto “Hello server….”.

 Crear la aplicación “server” que contesta con otro mensaje de texto “Welcome to the world client/server….”

También podría gustarte