Vous êtes sur la page 1sur 11

Sockets

Ing. Ivan Mejia Cabrera


Flujos de datos
El proceso para leer o escribir datos
consta de tres pasos:

1) Abrir el flujo de datos


2) Mientras exista más información
(leer o escribir ) los datos
3) Cerrar el flujo de datos

Todos los datos fluyen a través del ordenador desde una entrada
hacia una salida.

Este flujo de datos se denomina también stream.

Hay un flujo de entrada (input stream) que manda los datos desde
el exterior (normalmente el teclado) de la computadora.

Hay un flujo de salida (output stream) que dirige los datos hacia
los dispositivos de salida (la pantalla o un archivo).
Las jerarquías de clases
char Unicode, 16 bits byte, 8 bits.

Reader y Writer son las clases bases de la jerarquía para los flujos de caracteres. Para leer o escribir datos binarios tales
como imágenes o sonidos, se emplea otra jerarquía de clases cuyas clases base son InputStream y OutputStream.
DataInputStream
La clase DataInputStream es útil para leer datos del tipo primitivo de una forma portable.
La clase DataInputStream define diversos métodos readXXX que son variaciones del método read de la clase base
para leer datos de tipo primitivo

boolean readBoolean(); String readUTF();


byte readByte();
int readUnsignedByte(); Este método lee en una cadena que se ha codificado
short readShort(); utilizando un formato UTF-8 modificado
int readUnsignedShort();
char readChar();
int readInt();
String readLine();
long readLong();
float readFloat();
double readDouble();
String readUTF();
static String readUTF(DataInput in);
DataOutputStream
La clase DataOutputStream es útil para escribir datos del tipo primitivo de una forma portable.
La clase DataOutputStream define diversos métodos writeXXX que son variaciones del método write de la clase
base para escribir datos de tipo primitivo.

void writeBoolean(boolean v); void writeUTF(String str);


void writeByte(int v);
void writeBytes(String s); Este método escribe una cadena en la secuencia de salida
void writeShort(int v); usando codificación UTF-8 de una manera independiente de
void writeChars(String s); la máquina.
void writeChar(int v);
void writeInt(int v);
void writeLong(long v);
void writeFloat(float v);
void writeDouble(double v);
void writeUTF(String str);
Secuencia de lectura de datos
BufferedReader entrada = new BufferedReader(new InputStreamReader(socketCliente.getInputStream()));

buffer
Es un espacio de memoria, en el que se almacenan datos de
manera temporal, normalmente para un único uso
(generalmente utilizan un sistema de cola FIFO).

Su principal uso es para evitar que el programa o recurso


que los requiere, ya sea hardware o software, se quede sin
datos durante una transferencia (entrada/salida) de datos
irregular o por la velocidad del proceso.
Java.net: Socket
Un socket es un puente de unión entre 2 programas a través de la red. Un servidor y un Cliente. Es decir, es el que
se encarga de enviar y recibir la información.
La clase Socket
Constructores importantes
Socket(String host,int port)
•Crea un socket TCP y lo conecta a la máquina especificada por host en el
puerto port
•Arroja UnknownHostException, IOException

Socket(InetAddress address,int port)


•Crea un socket TCP y lo conecta a la máquina con dirección IP address en el
puerto port
•Arroja IOException

Socket(String host,int port, InetAddress localAddr,int


localPort)
•Crea un socket TCP conectado a la máquina remota host en el puerto port,
el socket queda enlazado a la máquina local en la dirección localAddr al puerto
local localPort, útil cuando tienes una máquina con múltiples direcciones de IP

Socket(InetAddress address,int port, InetAddress


localAddr,int localPort)
•Crea un socket TCP conectado a la máquina remota con dirección IP address al
puerto port, el socket queda enlazado a la máquina local en la
dirección localAddr al puerto local localPort,útil cuando tienes una máquina
con múltiples direcciones de IP
La clase Socket
Métodos importantes
InetAddress getInetAddress()
Regresa la dirección IP de la máquina remota a la cual está conectada el socket

InetAddress getLocalAddress()
Regresa la dirección IP de la máquina local a la cual el socket está enlazado

int getPort()
Regresa el puerto remoto al cual está conectado el socket

int getLocalPort()
Regresa el puerto local al cual está enlazado el socket Es importante ver que cada socket tiene asociado un par de flujos
(streams), para entrada y salida, a través de estos flujos se manda o
void close() recibe la información que fluye entre dos sockets conectados entre si.
Cierra el socket

InputStream getInputStream()
Regresa un flujo de entrada para este socket, que posteriormente se puede usar para recibir
información

OutputStream getOutputStream()
Regresa el flujo de salida de este socket, que posteriormente se puede usar para mandar
información
ServerSocket
Constructores

ServerSocket(int port)

• Crea un socket para escuchar por peticiones de conexión en el puerto especificado, port = 0
crea un socket en cualquier puerto libre
• La fila de espera para peticiones de conexiones se establece en 50

ServerSocket(int port,int backlog)

• Crea un socket servidor en el puerto especificado, port = 0 crea un socket en cualquier puerto
libre
• La fila de espera para peticiones de conexiones se establece en backlog
Esta clase nos permite crear sockets que se
ServerSocket(int port,int backlog, InetAddress bindAddr) utilizan exclusivamente para escuchar por
peticiones de conexión, una vez que llega una
• Crea un socket para escuchar por peticiones de conexión en el puerto port, con una fila de petición de conexión, a ésta se le asigna un
espera para conexiones de tamaño backlog y con la dirección IP bindAddr socket de tipo Socket para realizar el
• Este constructor se utiliza en el caso de que se tengan servidores con múltiples direcciones IP intercambio de información
asignadas.

La fila de espera es para poder manejar peticiones de conexión en forma simultánea o cuando
lleguen peticiones antes de que se termine de procesar la que llego antes.
ServerSocket
Métodos importantes
Socket accept()
Escucha por conexiones a este socket, el método
bloquea la ejecución del programa hasta que se
realiza una conexión y regresa como resultado
un socket de tipo TCP para poder realizar la
comunicación entre los dos procesos, el que pide la
conexión y el que la acepta

InetAddress getInetAddress()
Regresa la dirección local a la cual está conectada
el socket

int getLocalPort()
Regresa el puerto local al cual está enlazado el socket

void close() Esta clase nos permite crear sockets que se utilizan exclusivamente para
escuchar por peticiones de conexión, una vez que llega una petición de
Cierra el socket conexión, a ésta se le asigna un socket de tipo Socket para realizar el
intercambio de información

Vous aimerez peut-être aussi