Crear y Utilizar Sockets

5
APÉNDICE D) Crear y utilizar sockets.- "Muy bien", dice el programador novato, "Quiero comenzar a trabajar en Internet de un a manera sencilla y personalizada". "¿Está seguro?" responde. "Lo estoy", dice el programador novato. "En tal caso" responde, "Prueba con la clase Socket". La comunicación a través de Internet requiere sockets para crear las conexiones. Los sockets se conectan a puertos de comunicaciones numerados. Los 1,024 puertos inferiores se reservan para uso del sistema (por ejemplo, el puerto 21 es para FTP, el 23 para Telnet, el 25 para correo electrónico, el 80 para conexiones http, y el 119 para conexiones Usenet). Java soporta sockets mediante la clase Socket. Observe el diagrama de herencia para la clase Socket: java.lang.Object |____java.net.Socket En la siguiente tabla, la tabla D.1., encontrará los constructores de la clase Socket; y sus métodos en la tabla D.2.: Tabla D.1. Constructores de la clase Socket Constructor Descripción protected Socket( ) Construye un socket no conectado. Socket(InetAddress address, int port) Construye un socket stream y lo conecta al Puerto indicado en la dirección IP. Socket(InetAddress host, int port, boolean stream) Obsoleto. Utilice DatagramSocket en su lugar. Socket(InetAddress address, int port, InetAddress localAddr, int localPort) Construye un socket .y lo conecta a la dirección remota indicada en el puerto remoto protected Construye un socket desconectado

description

utilisar Socket

Transcript of Crear y Utilizar Sockets

Crear y utilizar sockets

APNDICE D)

Crear y utilizar sockets.-

"Muy bien", dice el programador novato, "Quiero comenzar a trabajar en Internet de un a manera sencilla y personalizada".

"Est seguro?" responde. "Lo estoy", dice el programador novato.

"En tal caso" responde, "Prueba con la clase Socket".

La comunicacin a travs de Internet requiere sockets para crear las conexiones. Los sockets se conectan a puertos de comunicaciones numerados. Los 1,024 puertos inferiores se reservan para uso del sistema (por ejemplo, el puerto 21 es para FTP, el 23 para Telnet, el 25 para correo electrnico, el 80 para conexiones http, y el 119 para conexiones Usenet).

Java soporta sockets mediante la clase Socket. Observe el diagrama de herencia para la clase Socket:

java.lang.Object

|____java.net.Socket

En la siguiente tabla, la tabla D.1., encontrar los constructores de la clase Socket; y sus mtodos en la tabla D.2.:

Tabla D.1. Constructores de la clase Socket

ConstructorDescripcin

protected Socket( )Construye un socket no conectado.

Socket(InetAddress address, int port)Construye un socket stream y lo conecta al Puerto indicado en la direccin IP.

Socket(InetAddress host, int port, boolean stream)Obsoleto. Utilice DatagramSocket en su lugar.

Socket(InetAddress address, int port, InetAddress localAddr, int localPort)Construye un socket .y lo conecta a la direccin remota indicada en el puerto remoto

protected Socket(SocketImpl impl)Construye un socket desconectado mediante la clase abstracta SocketImpl.

Socket(String host, int port)Construye un socket stream y lo conecta al nmero de Puerto indicado en el host.

Socket(String host, int port, boolean stream)Obsoleto. Use DatagramSocket en su lugar.

Socket(String host, int port, InetAddress localAddr, int localPort)Construye un socket y lo conecta al host remoto indicado en el Puerto remoto.

Tabla D. 2. Mtodos de la clase Socket

MtodoDescripcin

void close( )Cierra este socket.

InetAddress getInetAddress( )Obtiene la direccin a la que est conectado el socket.

InputStream getInputStream( )Obtiene un stream de entrada (input) para este socket.

InetAddress getLocalAddress( )Devuelve la direccin local a la que est unido el socket.

int getLocalPort( )Devuelve el puerto local al que est unido el socket.

OutputStream getOutputStream( )Obtiene un stream de salida (output) para este socket.

int getPort( )Localiza el Puerto remoto al que est conectado el socket.

int getReceiveBufferSize( )Obtiene el valor de la opcin SO_RCVBUF para este socket (el tamao del buffer de entrada).

int getSendBufferSize( )Obtiene el valor de la opcin SO_SNDBUF para este socket (el tamao del buffer de salida).

int getSoLinger( )Genera el ajuste de SO_LINGER.

int getSoTimeout( )Genera el ajuste de SO_TIMEOUT.

boolean getTcpNoDelay( )Prueba si TCP_NODELAY est activo.

void setReceiveBufferSize(int size)Ajusta la opcin de SO_RCVBUF al valor indicado.

void setSendBufferSize(int size)Ajusta la opcin de SO_SNDBUF al valor indicado.

static void setSocketImplFactory(SocketImplFactory fac)Establece la implementacin del socket cliente.

void setSoLinger(boolean on, int linger)Activa/desactiva SO_LINGER transcurrido un tiempo medido en segundos.

void setSoTimeout(int timeout)Activa/desactiva SO_TIMEOUT transcurridos x milisegundos..

void setTcpNoDelay(boolean on)Activa/desactiva TCP_NODELAY.

String toString( )Convierte este socket en un string (cadena).

Observe un ejemplo. En este caso, se conectar al puerto 80 de sun.com, el puerto http, y acceder a la pgina Web principal en www.sun.com, index.html, escribiendo una solicitud http a dicho puerto. Para escribir en un socket, puede utilizar el objeto PrintWriter, y para leer desde l, el objeto BufferedReader.

Compruebe el cdigo (observe que se ha terminado la solicitud http con dos caracteres de nueva lnea):

Import java.io.*;

import java.net.*;

public class sockets

{

public static void main(String[] args)

{

try {

Socket s = new Socket("www.sun.com", 80);

BufferedReader in = new BufferedReader(new

InputStreamReader(s.getInputStream()));

PrintWriter out = new PrintWriter(s.getOutputStream());

out.print("GET /index.html\n\n");

out.flush();

String line;

while ((line = in.readLine()) != null){

System.out.println(line);

}

} catch (Exception e){} }

}

Y ste es el resultado de este cdigo:

C:\>java sockets

Sun Microsystems

.

.

.

Este ejemplo utiliz el Puerto HTTP del servidor Web de Sun para conectarse. Sin embargo, puede generar ambos lados de la conexin (el cliente y el servidor) en Java. Para ello, lea el apartado dedicado a clientes/servidores TCP.