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
2de18
El paquete java.net
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:
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
ComunicacinmedianteelprotocoloTCP
14de18
ComunicacinmedianteelprotocoloTCP
Ejemplo...
15de18
ComunicacinmedianteelprotocoloTCP
El paquete java.net
Prctica
VerlaprcticaRedes
17de18
El paquete java.net
Bibliografa
http://www.programacion.net/java/tutorial/joa_red/5/
18de18