Anda di halaman 1dari 18

UNIVERSIDADDELCAUCA FacultaddeIng.

ElectrnicayTelecomunicaciones Informtica3 Programacin en Red

Pablo Augusto Mag Imbach Ing. en Electrnica W. Libardo Pantoja Ypez Ing. Sistemas

pmage@unicauca.edu.co wpantoja@unicauca.edu.co
1de18

El paquete java.net

OBJETIVO ConocerlaAPIdejavaparaelaboraraplicacionesen red.

2de18

El paquete java.net

ELpaquetejava.netAgenda Elpaquetejava.net java.net.InetAddress java.net.URl java.net.DatagramaSocket java.net.DatagramPacket java.net.Socket java.net.ServerSocket

3de18

El paquete java.net

Laclasejava.net.InetAddress
LaformadecrearunobjetoInetAddressesmedianteelmtodoesttico InetAddress.getByName(String),querecibeunnombredehostennotacin alfanumrica(porejemplo"www.etsit.upv.es"o"209.41.57.70"ydevuelve unobjetoInetAddressconesadireccin.Siladireccinnoexisteonopuede serencontrada,estemtodolanzaunaUnknownHostException.Seutiliza paracrearobjetosdetipoDatagramPacketoSocket.

4de18

El paquete java.net

Laclasejava.net.URL
Estaclasesolorepresentaladireccin,nosucontenido.Paraaccederal contenidodeunobjetoURLnecesitamosobtenerunobjeto java.net.URLConnection,extradoapartirdelpropioURL. Porejemplo,elsiguientecdigocreaunaURLqueapuntaa http://www.javasoft.com,posteriormenteobtieneunobjetoURLConnection yporltimohacealgorealmentetil:leerelcontenidodelaURL: URLdireccion=newURL("http://www.javasoft.com");
URLConnectionconex=direccion.openConnection(); InputStreamentrada=conex.getInputStream(); while((intdato=entrada.read())!=1){ /*Hacemosalgointeresanteconloqueleemos*/ }

5de18

El paquete java.net

ComunicacinmedianteelprotocoloUDP
java.net.DatagramaSocket Esun"conector"atravsdelcualenviamosyrecibimospaquetesUDP

DatagramSocketds1=newDatagramSocket(123); /*AquusamosesteDatagramSocketpararecibirdatos...*/ /*...*/ /*Hemosterminado,cerramoselsocket*/ ds1.close(); DatagramSocketds2=newDatagramsocket(); /*Aqulousamosparatransmitirdatos...*/ /*...*/ /*Hemosterminado,cerramoselsocket*/ ds2.close();

6de18

El paquete java.net

ComunicacinmedianteelprotocoloUDP
java.net.DatagramPacket1/3 Estaclaserepresentaalospaquetesdedatosquevamosarecibirotransmitira travsdelosobjetosDatagramSocket.Estospaquetesconstandeunacabecera (queincluyeladireccindeorigenydestinodelpaquete,elpuerto,lalongituddel paquete,unchecksum,etc.)yuncuerpo(dondeseencuentraelcontenidorealdel paquete).Paraenviardatos:

inttam=1024; Stringmaquina="www.atenea.unicauca.edu.co"; InetAddressdirecc=InetAddress.getByName(maquina); byte[]datos=newbyte[tam]; intpuerto=543; for(intn=0;n<tam;n++){ /*Generamoslosdatosquevamosaenviar*/ datos[n]=...; } DatagramSocketds=newDatagramSocket(); DatagramPacketdp=newDatagramPacket(datos,tam,direcc,puerto); ds.send(dp);/*Aquenviamoselpaquete*/

7de18

El paquete java.net

ComunicacinmedianteelprotocoloUDP
java.net.DatagramPacket2/3 Pararecibirdatos:

inttam=1024; byte[]buffer=newbyte[tam]; intpuerto=987; DatagramSocketds=newDatagramsocket(puerto); DatagramPacketdp=newDatagramPacket(buffer,tam); ds.receive(dp); //Ahoratenemosenbufferlainformacinquenosinteresa

8de18

El paquete java.net

ComunicacinmedianteelprotocoloUDP

java.net.DatagramPacket3/3

Siqueremosenviarpaquetesanuestrapropiamquinahayqueusarcomo nombredehostladireccin"localhost"o"127.0.0.1".

9de18

El paquete java.net

ComunicacinmedianteelprotocoloTCP
Laclasejava.net.Socket Unobjetojava.net.Socketesun"conector"atravsdelcualenviamosy recibimosdatosmedianteelprotocoloTCP.Adiferenciadelos"conectores" java.net.DatagramSocket,queeranusadosparaenviarpaquetessueltos, estos"conectores"TCPsirvenparaenviarorecibirdatosdeformacontinua, comositrabajramosconunflujoInputStreamoOutputStream. Nohayprdidadedatos.

10de18

El paquete java.net

ComunicacinmedianteelprotocoloTCP
CmoseusaunobjetoSocket? Lainicializacindeestosobjetosesmscomplejaqueenelcasode DatagramSocket,yaqueesnecesarioquepreviamentehayaalguien "escuchando"enelextremoreceptor. Suponiendoque,dealgunaforma,hayunprograma"escuchando"enel puerto1234delamquinacondireccinIP209.41.57.70,lainicializacinde nuestroSocketsera:
InetAddressd=InetAddress.getByName("209.41.57.70"); Sockets=newSocket(d,1234); /*Utilizaciondelsocket*/ ... /*Cerramoselsocket*/ s.close();

11de18

El paquete java.net

ComunicacinmedianteelprotocoloTCP
UnaveztenemosunSocketabiertoconotramquina,podemosobtenerun flujodeentradaodesalidaparapoderrecibirotransmitirdatos.Estosehace conlosmtodosSocket.getInputStream()ySocket.getOutputStream():
InetAddressd=InetAddress.getByName("209.41.57.70"); Sockets=newSocket(d,1234); Inputstreamis=s.getInputStream(); while((intdato=is.read())!=1){ System.out.println("Recibido"+dato); } is.close(); s.close();

12de18

El paquete java.net Laclasejava.net.ServerSocket Laclasejava.net.ServerSocketeselmecanismomedianteelcualnuestros programaspuedenquedarse"escuchando"enunpuerto,esperando conexionesentrantes.Laformageneraldetrabajarconsocketsserentonces: Unprograma(lollamaremos"servidor")creaunServerSocketenun determinadopuertoconocidoporelrestodeprogramas.Elservidorqueda esperandoaquealgnclienteintenteconectarconl. Enelmomentoenqueseestablecelaconexin,ambosprogramas(elcliente yelservidor)obtienenunobjetoSocket. MedianteobjetosInputStreamyOutputStreamobtenidosatravsdelos objetosSocket,elclienteyelservidorintercambiandatos.Unodelosdos programascierralaconexin.

ComunicacinmedianteelprotocoloTCP

13de18

El paquete java.net Laclasejava.net.ServerSocket Enelsiguienteejemplo,nuestroservidoresperalaconexinentrantey respondeconunmensajedebienvenida:


ServerSocketss=newServerSocket(1234); Sockets=ss.accept();//sequedaenespera OutputStreamos=s.getOutputStream(); Stringmensaje="Porfavorescchenme!!"; byte[]matriz=mensaje.getBytes(); os.write(matriz); os.close(); s.close();

ComunicacinmedianteelprotocoloTCP

14de18

El paquete java.net Laclasejava.net.ServerSocket

ComunicacinmedianteelprotocoloTCP

DeunobjetoServerSocketsepuedenobtenermuchosobjetosSocketdiferentes, cadaunoindependientedelosdems.Porejemplo,podemostenerunprogramaque trabajeenelpuerto80yqueasignecadanuevaconexinaunhilodeejecucin distinto.NoesnecesarioquesecierrenlosobjetosSocketpreviosantesdepoder aceptarunanuevaconexin.EstoesloquehacequelosservidoresWebpuedan atenderavariaspersonasalmismotiempo,sintenerqueesperaraterminarconcada clienteantesdeatenderalsiguiente.

Ejemplo...

15de18

El paquete java.net Laclasejava.net.ServerSocket Porejemplo,supongamosquetenemosunaclasedeobjetos"MiniServidor", queimplementanlainterfazRunnableyqueestnprogramadospara responderalaspeticionesqueleslleganatravsdeunSocket.Unaposible implementacinparaelservidorsera:


Serversocketss=newServerSocket(1234); while(true){ Sockets=ss.accept(); MiniServidorm=newMiniServidor(s); Threadt=newThread(m); t.start(); }

ComunicacinmedianteelprotocoloTCP

Laclase"MiniServidor",implementanlainterfaz Runnableyrespondealaspeticionesquelesllegan atravsdeunSocket.


16de18

El paquete java.net

Prctica

VerlaprcticaRedes

17de18

El paquete java.net

Bibliografa

http://www.programacion.net/java/tutorial/joa_red/5/

18de18

Anda mungkin juga menyukai