Este documento describe los protocolos UDP y TCP para la programación en red en Java. Explica las clases InetAddress y DatagramPacket para trabajar con UDP, permitiendo enviar y recibir paquetes de datos. También cubre la clase DatagramSocket para crear sockets UDP. Para TCP, presenta su función de garantizar la entrega de paquetes de forma fiable. Por último, detalla el uso de estas clases para simular la transmisión de datos de cohetes y estaciones de radar a través de UDP.
1. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
Tema 7
Programacion en red.
Departament d’Inform`tica. Universitat de Val`ncia
a e
´
Indice
1. Direcciones IP 1
2. UDP 3
2.1. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3. TCP 7
4. HTTP 10
4.1. La clase URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2. La clase URLConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3. La clase HttpURLConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Vamos a ver algunas de las clases que proporciona Java para realizar programas en los que la
informaci´n se transmita a trav´s de una red.
o e
Veremos 4 grupos de clases:
juan.gutierrez@uv.es P´gina: 1
a
2. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
Las que sirven para representar una direcci´n IP.
o
Clases que sirven para enviar informaci´n utilizando el protocolo UDP (User Datagram
o
Protocol)
Clases que sirven para enviar informaci´n utilizando el protocolo TCP (Transmission
o
Control Protocol)
Clases que sirven para trabajar con el protocolo HTTP (HyperText Transfer Protocol)
1. Direcciones IP
Una direcci´n IP es un n´mero sin signo de 32 bits (IPv4) o de 128 bits (IPv6).
o u
Una instancia de la clase InetAddress sirve para representar una direcci´n IP.
o
Algunos de los m´todos que define esta clase son:
e
p u b l i c s t a t i c I n e t A d d r e s s getByName ( S t r i n g h o s t ) t h r o w s UnknownHostException
Devuelve un objeto del tipo InetAddress a partir del nombre.
p u b l i c byte [ ] getAddress ( )
Devuelve la direcci´n IP en un vector de byte.
o
p u b l i c s t a t i c I n e t A d d r e s s [ ] getAllByName ( S t r i n g h o s t ) t h r o w s UnknownHostException
Dado un nombre de servidor, devuelve un vector con todas sus direcciones IP. El nombre puede
ser un nombre de m´quina, como por ejemplo sweb.uv.e o una representaci´n textual de su
a o
direcci´n IP como por ejemplo 147.156.16.46
o
p u b l i c s t a t i c InetAddress getLocalHost ()
Devuelve la direcci´n de la m´quina local.
o a
El siguiente c´digo muestra un ejemplo de aplicaci´n de esta clase:
o o
juan.gutierrez@uv.es P´gina: 2
a
3. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
import java . net . ∗ ;
public c la ss DireccionesIP {
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
byte [ ] b ;
try {
// S i s e pasa un argumento obtenemos l a d i r e c c i o n IP
i f ( a r g s . l e n g t h >0){
String host = args [ 0 ] ;
I n e t A d d r e s s [ ] d i r e c c i o n e s = I n e t A d d r e s s . getAllByName ( h o s t ) ;
f o r ( i n t i =0; i <d i r e c c i o n e s . l e n g t h ; i ++){
System . out . p r i n t l n ( d i r e c c i o n e s [ i ] ) ;
}
}
// S i no obtenemos l a d i r e c c i o n IP de l a maquina l o c a l
else {
InetAddress d i r e c c i o n = InetAddress . getLocalHost () ;
System . out . p r i n t l n ( d i r e c c i o n ) ;
}
} catch ( Exception e ) {
e . printStackTrace () ;
}
}
}
2. UDP
Es un protocolo de la capa de transporte que las aplicaciones pueden utilizar para enviar paquetes
de datos.
UDP soporta la especificaci´n de un n´mero de puerto por lo que puede ser utilizado para enviar
o u
datagramas a aplicaciones o servicios especificos.
Inconvenientes: no garantiza la entrega de los paquetes ni que ´stos lleguen en el orden en el
e
que han sido enviados.
Ventajas: Es eficiente, causa poca sobrecarga, es conveniente para aplicaciones en tiempo real
y un socket UDP puede recibir datos de diferentes m´quinas.
a
Java proporciona dos clases para el trabajo con el protocolo UDP:
java.net.DatagramPacket
java.net.DatagramSocket
La clase DatagramPacket representa un paquete de datos que va a ser enviado o recibido utilizando
el protocolo UDP. Los paquetes contienen datos, una direcci´n IP y un n´mero de puerto.
o u
juan.gutierrez@uv.es P´gina: 3
a
4. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
Hay dos situaciones en las que se debe crear un objeto del tipo DatagramPacket:
para enviar un paquete a una m´quina remota utilizando UDP (la direcci´n IP y el puerto se
a o
refieren a la m´quina destino).
a
para recibir un paquete enviado por una m´quina remota utilizando UDP (la direcci´n IP y el
a o
n´mero de puerto se refieren a la m´quina que ha enviado el paquete).
u a
Esta clase dispone de varios constructores (solo se muestran algunos):
DatagramPacket ( b y t e [ ] buf , i n t l o n g )
Crea un paquete UDP para recibir paquetes de longitud long, almacenando los datos en buf.
DatagramPacket ( b y t e [ ] buf , i n t l o n g , I n e t A d d r e s s d i r e c c , i n t p u e r t o )
Construye un paquete UDP para enviar la informaci´n contenida en buf cuya longitud es long
o
a la m´quina y puertos especificados
a
Algunos de los m´todos que ofrece esta clase son:
e
p u b l i c InetAddress getAddress ( )
Devuelve la direcci´n IP asociada al paquete UDP.
o
p u b l i c b y t e [ ] getData ( )
Devuelve el buffer con los datos.
p u b l i c i n t getLength ( )
Devuelve el n´mero de bytes almacenado en el datagrama. Este n´mero puede ser menor que
u u
el tama˜o del buffer.
n
p u b l i c void setAddress ( InetAddress dir )
juan.gutierrez@uv.es P´gina: 4
a
5. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
Sirve para asignar una direcci´n IP al paquete UDP.
o
p u b l i c setData ( byte [ ] b u f f e r )
Asigna nuevos datos al paquete UDP.
p u b l i c setLength ( i n t long )
Sirve para asignar la longitud real de los datos que contiene el paquete UDP. Este n´mero
u
deber ser menor o igual que el tama˜o del buffer.
n
La clase DatagramSocket representa un socket UDP para permitir el env´ y recepci´n de paquetes
ıo o
UDP.
Una misma instancia de la clase DatagramSocket puede ser utilizada tnto para recibir paquetes como
para enviarlos.
La clase DatagramSocket proporciona entre otros los siguientes constructores:
DatagramSocket ( )
Contruye un socket para el trabajo con paquetes UDP y le asigna un puerto libre en la m´quina
a
local.
DatagramSocket ( i n t p u e r t o )
Contruye un socket para el trabajo con paquetes UDP y le asigna el puerto especificado.
Algunos de los m´todos que ofrece esta clase son:
e
p u b l i c v o i d send ( DatagramPacket datagrama ) t h r o w s IOException
Env´ el datagrama UDP.
ıa
juan.gutierrez@uv.es P´gina: 5
a
6. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
p u b l i c v o i d r e c e i v e ( DatagramPacket datagrama ) t h r o w s IOException
Espera a que llegue un paquete UDP y lo almacena en el DatagramPacket pasado como argu-
mento. Una vez recibido, los datos sobre la direcci´n y puerto ser´n los correspondientes a la
o a
m´quina origen. Si no se ha establecido el tiempo de espera, este m´todo bloquea la ejecuci´n
a e o
del programa hasta que se reciba el paquete UDP.
p u b l i c void s e t R e c e i v e B u f f e r S i z e ( i n t long ) throws SocketException
Establece el tama˜o del buffer para los paquetes UDP de entrada. Si este valor es peque˜o y
n n
llegan muchos paquetes UDP en un corto espacio de tiempo es posible que alguno de ellos se
pierda.
p u b l i c void s e t S e n d B u f f e r S i z e ( i n t long ) throws SocketException
Establece el tama˜o del buffer para los datagramas UDP de salida.
n
p u b l i c v o i d setSoTimeout ( i n t d u r a c i o n )
Establece el tiempo de espera del socket. El valor es el n´mero de milisegundos que el m´todo
u e
receive() se esperar´ antes de lanzar una excepci´n del tipo SocketTimeoutException.
a o
public void close ()
Cierra el socket y libera el puerto.
La estructura b´sica que debe tener una aplicaci´n para la creaci´n y el env´ de paquetes UDP
a o o ıo
se muestra en el siguiente c´digo.
o
DatagramSocket s o c k e t = new DatagramSocket ( ) ;
DatagramPacket p a q u e t e = new DatagramPacket ( new b y t e [ 1 0 2 4 ] , 1 0 2 4 ) ;
p a q u e t e . s e t A d d r e s s ( I n e t A d d r e s s . getByName ( maquina ) ) ;
paquete . s etPor t (2000) ;
boolean f i n a l i z a r = f a l s e ;
while ( ! f i n a l i z a r ){
// A s ign ar l o s d a t o s a l b u f f e r d e l p a q u e t e UDP
...
s o c k e t . send ( p a q u e t e ) ;
juan.gutierrez@uv.es P´gina: 6
a
7. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
...
}
socket . close () ;
La estructura b´sica que debe tener una aplicaci´n para la recepci´n de paquetes UDP a trav´s
a o o e
del puerto 2000 se muestra en el siguiente c´digo.
o
DatagramSocket s o c k e t = new DatagramSocket ( 2 0 0 0 ) ;
DatagramPacket p a q u e t e = new DatagramPacket ( new b y t e [ 1 0 2 4 ] , 1 0 2 4 ) ;
boolean f i n a l i z a r = f a l s e ;
while ( ! f i n a l i z a r ){
s o c k e t . r e c e i v e ( paquete ) ;
// E x t r a e r l o s d a t o s d e l p a q u e t e UDP
...
}
socket . close () ;
Al procesar el paquete la aplicaci´n debe trabajar con el array de bytes que contiene los datos.
o
Sin embargo, a partir de los datos es posible construir un ByteArrayInputStream y utilizar ´ste para
e
obtener un flujo de entrada filtrado.
2.1. Ejemplo
Supongamos que para monitorizar durante 40 segundos la trayectoria seguida por un cohete durante
su lanzamiento, se obtienen datos enviados desde el cohete y datos de diversas estaciones de radar. Cada
estaci´n de radar proporciona datos cada 100 milisegundos y los datos del cohete est´n disponibles
o a
cada 20 milisegundos. Todos estos datos deben ser enviados a una m´quina encargada de procesarlos
a
y almacenarlos.
Vamos a suponer que los datos que env´ el cohete son: velocidad horizontal y vertical, altitud y
ıa
temperatura. Cada estaci´n de radar proporciona a su vez el dato de la distancia a la que se encuentra
o
el cohete respecto de la estaci´n de radar.
o
En el directorio Ejemplos/UDP/Cohete hay una serie de clases que permiten realizar una simulaci´n
o
utilizando 20 estaciones de radar.
Los datos que proporciona esta simulaci´n no son realistas ya que la parte relevante es la cons-
o
trucci´n, env´ y obtenci´n de los paquetes UDP.
o ıo o
3. TCP
Es un protocolo de la capa de transporte que las aplicaciones pueden utilizar para enviar paquetes
de datos y que garantiza la entrega en el mismo orden en el que se han enviado.
juan.gutierrez@uv.es P´gina: 7
a
8. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
Desde el punto de vista de la aplicaci´n, TCP transfiere un flujo continuo de bytes (por lo que se
o
pueden utilizar los flujos de Entrada/Salida) a trav´s de Internet. La aplicaci´n no ha de preocuparse
e o
de dividir los datos en bloques.
El coste de la garant´ de entrega y de la ordenaci´n de los datos es la reducci´n del rendimiento
ıa o o
en la red.
Java proporciona dos clases para el trabajo con el protocolo TCP:
java.net.Socket
java.net.ServerSocket
La clase Socket se utiliza para crear el cliente que se conecta a un determinado servicio.
La clase ServerSocket se utiliza para crear el servidor asociado a un puerto.
La clase Socket representa un canal de comunicaci´n entre dos puertos de comunicaci´n TCP que
o o
pertenecen a una o dos m´quinas. Un socket TCP no puede comunicar m´s de dos m´quinas.
a a a
Si se requiere esta funcionalidad el cliente debe establecer m´ltiples conexiones, una por cada
u
m´quina.
a
Esta clase ofrece diversos constructores entre los que cabe destacar:
Socket ( InetAddress dir , i n t puerto )
Crea un socket conectado a la IP y puerto especificados.
Socket ( InetAddress dir , i n t puerto , InetAddress l o c a l d i r , i n t puertoLocal )
Crea un socket conectado la IP y puerto especificados y es asociado a la IP local y al puerto
proporcionados.
S o c k e t ( S t r i n g maquina , i n t p u e r t o )
Crea un socket conectado la m´quina y puerto especificados.
a
S o c k e t ( S t r i n g maquina , i n t p u e r t o , I n e t A d d r e s s l o c a l , i n t p u e r t o L o c a l )
juan.gutierrez@uv.es P´gina: 8
a
9. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
Crea un socket conectado la maquina y puerto especificados y es asociado a la IP local y al
puerto proporcionados.
Una vez que se ha creado el socket las operaciones habituales que se pueden realizar con el objeto
son: leer informaci´n, enviar datos, establecer opciones y cerrar la conexi´n.
o o
Vamos a ver cuales son algunos de los m´todos que ofrece esta clase.
e
p u b l i c OutputStream getOutputStream ( ) t h r o w s IOException
Devuelve un flujo de salida que se puede utilizar para escribir datos que se env´ a la aplicaci´n
ıan o
a la que est´ conectado este socket.
a
p u b l i c InputStream g e t I n p u t S t r e a m ( ) t h r o w s IOException
Devuelve un flujo de entrada que se puede utilizar para leer datos de se reciben de la aplicaci´n
o
a la que est´ conectado este socket.
a
p u b l i c v o i d s e t R e c e i v e B u f f e r S i z e ( i n t tam ) t h r o w s S o c k e t E x c e p t i o n
Asigna a la opci´n SO RCVBUF el valor especificado. Esta opci´n es utilizada para establecer
o o
el tama˜o del buffer de red para la entrada.
n
Para conocer el valor por defecto se puede utilizar getReceiveBufferSize().
La llamada a este m´todo se debe realizar realizar antes de conectar el socket.
e
p u b l i c v o i d s e t S e n d B u f f e r S i z e ( i n t tam ) t h r o w s S o c k e t E x c e p t i o n
Asigna a la opci´n SO SNDBUF el valor especificado. Esta opci´n es utilizada para establecer
o o
el tama˜o del buffer de red para la salida.
n
Para conocer el valor por defecto se puede utilizar getSendBufferSize().
p u b l i c v o i d setSoTimeout ( i n t d u r a c i o n ) t h r o w s S o c k e t E x c e p t i o n
Establece el valor de la opci´n SO TIMEOUT que controla el tiempo en milisegundos que
o
bloquear´n las operaciones de lectura. Un valor de cero bloquea de forma indefinida, en otro
a
caso al transcurrir el tiempo especificado y no recibir datos, se lanza una excepci´n del tipo
o
SocketTimeoutException.
juan.gutierrez@uv.es P´gina: 9
a
10. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
p u b l i c v o i d setTcpNoDelay ( b o o l e a n f l a g ) t h r o w s S o c k e t E x c e p t i o n
Establece el valor de la opci´n TCP NODELAY que determina si se debe utilizar el algoritmo
o
de Nagle. 1
p u b l i c v o i d shutdownInput ( ) t h r o w s IOException
Cierra el flujo de entrada de el socket, de forma que las operaciones de lectura devolver´n el
a
marcador de final de fichero.
p u b l i c v o i d shutdownOutput ( ) t h r o w s IOException
Cierra el flujo de salida de el socket, de forma que las operaciones de escritura lanzar´n una
a
excepci´n del tipo IOException.
o
p u b l i c v o i d c l o s e ( ) t h r o w s IOException
Cierra el socket. Una vez cerrado, no se puede volver a conectar. Se necesitar´ crear un nuevo
ıa
socket.
Para el resto de m´todos consultad el API.
e
En cuanto a la clase ServerSocket el constructor m´s sencillo es:
a
S e r v e r S o c k e t ( i n t p u e r t o ) t h r o w s IOException
Crea un socket servidor asociado al puerto que se pasa como argumento de forma que los
clientes puedan localizar el servicio TCP que ofrece. Si el puerto ya est´ asociado se lanza una
a
excepci´n.
o
Una vez que se tiene un objeto de este tipo, se puede obtener un Socket para modelar la conexi´n
o
entre el cliente y el servidor mediante el m´todo:
e
p u b l i c S o c k e t a c c e p t ( ) t h r o w s IOException
Espera a que el socket cliente realice una petici´n de conexi´n y devuelve el socket correspon-
o o
diente. Es una operaci´n que bloquea hasta que no se produzca una conexi´n (a no ser que se
o o
haya establecido la opci´n SO TIMEOUT
o
juan.gutierrez@uv.es P´gina: 10
a
11. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
Para el resto de m´todos consultad el API.
e
En el directorio Ejemplos/TCP hay un ejemplo de uso de estas clases.
4. HTTP
4.1. La clase URL
Esta clase sirve para representar uno de los tipos m´s usados de direcci´n en Internet: el Uniform
a o
Resource Locator.
Las direcciones URL pueden referirse a ficheros, sitios Web, sitios FTP, direcciones de correo
electr´nico, etc.
o
La estructura de estas direcciones es:
protocolo : // hostname (: puerto) ruta (#ref erencia)
La clase URL dispone de varios constructores entre los que cabe destacar:
URL( S t r i n g cadena ) t h r o w s MalformedException
Crea un objeto URL a partir de la direcci´n pasada en forma de String.
o
URL( S t r i n g p r o t o c o l o , S t r i n g host , S t r i n g f i l e ) t h r o w s MalformedException
Crea un objeto URL a partir del protocolo, la m´quina y el recurso pasados en forma de String.
a
URL( S t r i n g p r o t o c o l o , S t r i n g host , i n t p u e r t o , S t r i n g f i l e ) t h r o w s MalformedException
Crea un objeto URL a partir del protocolo, la m´quina y el recurso pasados en forma de String,
a
y el puerto pasado como un entero.
URL(URL c o n t e x t o , S t r i n g r e l a t i v o ) t h r o w s MalformedException
juan.gutierrez@uv.es P´gina: 11
a
12. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
Crea un objeto URL a partir una ruta relativa a la URL pasada como primer argumento.
URL( S t r i n g p r o t o c o l , S t r i n g host , i n t po rt , S t r i n g f i l e , URLStreamHandler h a n d l e r ) throws
MalformedException
Crea un objeto URL donde se especifica un objeto para manejar el protocolo que se utilizar´ du-
a
rante la conexi´n. Por ejemplo un manejador de protocolo HTTP conoce c´mo comunicarse
o o
con un servidor HTTP y un manejador de protocolo FTP conoce c´mo comunicarse con un
o
servidor FTP. Si se va a utilizar un protocolo que no est´ implementado, se debe proporcional
a
el URLStreamHandler
Algunos de los m´todos de los que dispone esta clase son:
e
String getProtocol ()
Devuelve el protocolo asociado al URL
String getHost ( )
Devuelve la m´quina asociada al URL
a
i n t getPort ()
Devuelve el puerto asociado al URL
URLConnection openConnection ( ) t h r o w s IOException
Devuelve un objet URLConnection que representa una conexi´n con el recurso remoto al que
o
hace referencia el objeto URL.
InputStream openStream ( ) t h r o w s IOException
Abre una conexi´n con el URL y devuelve un objeto del tipo InputStream para leer a trav´s
o e
de esa conexi´n.
o
Si se necesita controlar la forma en la que realiza la petici´n del recurso se debe utilizar el m´todo
o e
openConnection(). Si lo unico que se desea hacer es leer el recurso se puede utilizarn openStream().
´
juan.gutierrez@uv.es P´gina: 12
a
13. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
4.2. La clase URLConnection
La clase URLConnection es la superclase abstracta de todas las clases que representan la comunicaci´n
o
entre la aplicaci´n y un URL.
o
Un objeto de este tipo se puede utilizar para leer desde y para escribir hacia el el recurso al que
hace referencia el objeto URL.
En general la creaci´n de una conexi´n implica los siguientes pasos:
o o
1. Se obtiene un objeto URLConnection utilizando el m´todo openConnection() de un objeto URL.
e
2. Se establecen los par´metros y las propiedades de la petici´n.
a o
3. Se establece la conexi´n utilizando el m´todo connect()
o e
4. Se puede obtener informaci´n sobre la cabecera o/y obtener el recurso remoto.
o
Algunos de los m´todos de esta clase son:
e
v o i d c o n n e c t ( ) t h r o w s IOException
Establece una conexi´n entre la aplicaci´n (el cliente) y el recurso (servidor). Antes de invocar
o o
a este m´todo la aplicaci´n puede especificar las propiedades de la cabecera de la petici´n.
e o o
i n t getContentLength ( )
Devuelve el valor del campo de cabecera content-length o -1 si no est´ definido.
a
S t r i n g getContentType ( )
Devuelve el valor del campo de cabecera content-type o null si no est´ definido.
a
S t r i n g g e t H e a d e r F i e l d ( S t r i n g campo )
Devuelve el valor del campo de cabecera especificado o null si no est´ definido.
a
OutputStream getOutputStream ( ) t h r o w s IOException
juan.gutierrez@uv.es P´gina: 13
a
14. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
Devuelve un objeto OutputStream para escribir datos en esta conexi´n.
o
InputStream g e t I n p u t S t r e a m ( ) t h r o w s IOException
Devuelve un objeto InputStream para leer datos de esta conexi´n.
o
v o i d s e t R e q u e s t P r o p e r t y ( S t r i n g key , S t r i n g v a l u e )
Establece una propiedad de la petici´n. Por ejemplo:
o
¨
setRequestProperty ( User-agent”, .agente”);
4.3. La clase HttpURLConnection
Es una subclase de URLConnection que soporta caracter´
ısticas propias del protocolo HTTP.
Esta clase no tiene constructor, la forma de obtener una referencia a un objeto de este tipo es:
URL d i r e c c i o n = new URL( d i r ) ;
URLConnection c o n e x i o n = u r l . openConnection ( ) ;
// Comprobamos su t i p o
i f ( c o n e x i o n i n s t a n c e o f HttpURLConnection ) {
// Se r e a l i z a un c a s t
HttpURLConnection conexionHTTP = ( HttpURLConnection ) c o n e x i o n ;
// Resto d e l c o d i g o
}
Algunos de los m´todos que define esta clase (adem´s de los de URLConnection) son:
e a
void disconnect ()
Si la conexi´n con el servidor Web est´ activa se cierra
o a
v o i d setRequestMethod ( S t r i n g metodo ) t h r o w s P r o t o c o l E x c e p t i o n
juan.gutierrez@uv.es P´gina: 14
a
15. Programacion en red. LP (Telem´tica)
a
Curso 04/05 Universitat de Val`ncia
e
Establece el m´todo de petici´n que se utilizar´ en esta conexi´n (POST, GET, HEAD,...)
e o a o
Debe ser utilizado antes de llamar a connect().
boolean usingProxy ( )
Muestra si se est´ utilizando un servidor proxy para la conexi´n.
a o
i n t getResponseCode ( )
Obtiene el c´digo de estado del mensaje de respuesta HTTP. Por ejemplo para las siguientes
o
l´
ıneas de estado:
HTTP/1.0 200 OK
HTTP/1.0 401 Unauthorized
Se obtendr´ 200 y 401 respectivamente.
ıa
Devuelve -1 si no se puede obtener el c´digo a partir de la respuesta.
o
juan.gutierrez@uv.es P´gina: 15
a