1. UNI VERSI DAD REGI ONAL AUTÓNOMA DE LOS
ANDES ‘‘ UNI ANDES’’
TEMA DEL DOCUMENTO:
SOCKET
ESTUDI ANTE: J ONATHAN I SRAEL SALGUERO FLORES.
DOCENTE: BERNABÉ ORTEGA
2015
Puyo-Pastaza
2. Introducci ón
El paquetej ava. net de l a pl atafor ma Java proporci ona una cl ase Socket, l a cual i mpl ementa
una del as partes del acomuni caci ón bi direcci onal entre un programa Java y otro programa en
lared.
La cl ase Socket se sitúa en l a parte más alta de una i mpl ementaci ón dependi ente de l a
pl atafor ma, ocultandol os detall es de cual qui er sistema particul ar al programa Java. Usandol a
cl asej ava. net.Socket en l ugar de utilizar códi go nativo de l a pl atafor ma, l os programas Java
pueden comuni carse a través de l a red de una for ma t otal mente i ndependi ente de l a
pl atafor ma.
De f or ma adi ci onal, j ava. net i ncl uyel acl ase ServerSocket, l acual i mpl ementa un socket el cual
los servi dores pueden utilizar para escuchar y aceptar petici ones de conexi ón de clientes.
Nuestro obj etivoserá conocer cómo utilizar l as cl ases Socket y ServerSocket. Por otra parte, si
intentamos conectar a través de l a Web, l a cl ase URL y cl ases rel aci onadas (URLConnecti on,
URLEncoder) son probabl emente más apropi adas quel as cl ases de sockets. Pero de hecho, l as
cl ases URL noson más que una conexi óna un ni vel más altoal a Web y utlilizan como parte de
sui mpl ementaci óni nterna los sockets.
Model o de comuni caci ones con Java
El model o de sockets más si mpl e es:
· El servi dor establ ece un puerto y espera durante un ci erto ti empo (timeout
segundos), a que el cli ente establ ezca l a conexi ón. Cuando el cli ente solicite una
conexi ón, el servi dor abrirála conexi ón socket con el mét odo accept().
· El cli ente establ ece una conexi ón con l a máqui na host a través del puerto que se
desi gne en puerto#
· El cliente y el servi dor se comuni can con manej adores InputStreamy OutputStrea m
Nor mal mente, un servi dor se ej ecuta en una máqui na específica y ti ene un socket asoci ado a
un número de puerto específico. El servi dor si mpl emente espera a l a escucha en el socket a
que un cli enteseconectecon una petici ón. El cli ente conoce el nombre del a máqui nasobrel a
que está ej ecutándose el servi dor y el número de puerto al que está conectado. Solicitar una
conexi ón consiste eni ntentar establ ecer una cita con el servi dor en el puerto del a máqui na
servi dora.
SOCKET SERVI DOR
Si todo va bi en, el servi dor aceptal aconexi ón. Pero antes, el servi dor crea un nuevosocket en
un puerto diferente. Es necesari ocrear un nuevo socket (y consecuentemente un número de
puerto diferente) def or ma que en el socket ori gi nal se conti núe al a escucha de las peti ci ones
de nuevos cli entes mi entras se ati ende al as necesi dades del cli enteconectado. En el cli ente, si
se acepta l a conexi ón, el socket se crea satisfactori amente y se puede utilizar para
comuni carse con el servi dor.
3. SOCKET CLIENTE
Un socket es el extremo f inal de un enl ace punto-a-punto que comuni ca a dos programas
ej ecutándose en una red.
Los sockets si empre están asoci ados a un número de puerto que es utilizado por TCP para
identificar la aplicaci ón ala que está desti nada la solicitud y poder redirigírsel a.
Apertura de Sockets
Si estamos programando un CLI ENTE, el socket se abre delafor ma:
Socket mi Cli ente; mi Cli ente = newSocket( " maqui na", numeroPuerto); Donde maqui na es el
nombre de l a máqui na en donde estamos i ntentando abrirl a conexi ón y numeroPuerto es el
puerto ( un número) del servi dor que está corri endo sobre el cual nos queremos conectar.
Cuando se sel ecci ona un número de puerto, se debe tener en cuenta que l os puertos en el
rango 0- 1023 están reservados para usuari os con muchos pri vilegi os (superusuari os o root).
Estos puertos sonl os que utilizanl os servici os estándar del sistema como email, ftp o http.
Paral as aplicaci ones que se desarroll en, asegurarse de sel ecci onar un puerto por enci ma del
1023.
En el ej empl o anteri or no se usan excepci ones; si n embargo, es una grani dea la captura de
excepci ones cuando se está trabaj ando con sockets. El mis mo ej empl o quedarí acomo:
Socket mi Cli ente;
try {
mi Cli ente = newSocket( "maqui na", numeroPuerto);
} catch( I OExcepti on e) {
System. out. pri ntl n( e);
}
Si estamos programando un SERVI DOR, lafor ma de apertura del socket es la que
muestra el sigui ente ej emplo:
Socket mi Servici o;
try {
mi Servici o = newServerSocket( numeroPuerto);
} catch( I OExcepti on e) {
System. out. pri ntl n( e);
}
4. Ala hora de lai mpl e mentaci ón de un servi dor también necesitamos crear un obj eto
socket desde el ServerSocket para que esté atento a las conexi ones que le puedan realizar
clientes potenci al es y poder aceptar esas conexi ones:
Socket socketServici o = null;
try {
socketServici o = mi Servicio. accept();
} catch( I OExcepti on e ) {
System. out. pri ntl n( e );
}
BI BLI OGRAFÍ A
Un excel ente li bro para programaci ón avanzada en C sobre entorno Uni x es " UNI X,
Programaci ón avanzada" de Fco. Manuel Márquez Garcí a, editori al ra- ma.
Ti enes una gui a bastante si mpl e, pero más detallada de s ockets en
http:// www. arrakis.es/~dmr q/beej/i ndex. ht ml