Documente Academic
Documente Profesional
Documente Cultură
ClaseleDatagramSocketi DatagramPacket
Datagramelereprezintpacheteindependentededate.Fiecarepachetestetransmisdelao
mainlaaltadoarpebazainformaiilorconinutedeelnsui.Pacheteletrimisedelaodestinaie
ctreoaceeaisurspotajungeperutediferiteinoriceordine.
DatagramelesunttransportatenreeafolosindprototcolulUDP(UserDatagramProtocol),
unuldinprotocoaleledebazalefamilieiTCP/IP.
Avantaje:
vitezadetransfermaimare
nprocesulcomunicrii,nusestabileteolegturpermanentntreclientiserver(ca
laprotocolulTCP)
adaptarealacondiiiledemomentalereelei(congestii,legturiindisponibiletemporar,
etc)
Dezavantaje:
lucrumaidificil
nu garanteaz ajungerea la destinaie a pachetelor trimise i nici c vor fi primite n
aceeaiordinencareaufostexpediate.
Exist,ns,situaiincareacestelucrurinusuntimportanteiacestmodelestedepreferat
celuibazatpeconexiunicaresolicitmultmaimultattserverulcticlientul.
Defapt,protocolulTCPfolosetetotpachetepentrutrimitereainformaiilordintrunnodn
altul al reelei, cu deosebirea c asigur respectarea ordinii de transmitere a mesajelor i verific
ajungerea la destinaie a tuturor pachetelor, n cazul n care unul nu a ajuns, acesta va fi retrimis
automat.
Pentrufiecaredatagramtrebuiespecificate:
adresadestinaiei
numrulportuluilacaresetrimitedatagrama
coninutuldatagramei
nJava:
DatagramelesuntncapsulatenobiectealeclaseiDatagramPacket.
Primireaitrimitereadatagramelorserealizeazprinintermediulunorsocketuri,
implementatede clasaDatagramSocket,attpentruserverctipentruclient.
Ambeleclasesuntdefinitenpachetul java.net
Aplicaiaclientincapsuleazdate(cererea)intrunpachet(unobiectdetipDatagramPacket)
si il transmite unui partener (serverului). Aplicatia server primete pachete de tip cerere (de la
clienti)iretrimitepachetecurspunsurilacererileprimite.
ncazulncareunpachetsepierde,clientulvaretransmitecerereadupunanumitinterval
detimp.
1
ClasaDatagramPacket
clasfinal
Instanele(obiectele)claseiDatagramPacketsuntpacheteledatagramcaresetransmitntreserver
iclient
Constructori:
1)publicDatagramPacket(bytebuf[],intlength)
creeaz un obiect de tip DatagramPacket (un pachet datagram) destinat recepionrii (primirii)
pachetelordelungimelengthnzonabuf.Estenecesarcalength<=buf.length
2)publicDatagramPacket(bytebuf[],intlength,InetAddressadr,intport)
creeaz un obiect detip DatagramPacket (un pachet datagram) destinat trimiteriipachetelor de
lungimelengthdinzonabuf,ctreadresa(gazda) adr iportul port.
Metode:
a)Metodecarepermitpreluarea,dintrunpachetdatagram,aunorinformaii
(seutilizeaz,deregul,pentrupachetuldatagramcareafostrecepionat)
1)...InetAddressgetAddress()
ReturneazunobiectdetipInetAddresscarereprezintadresaIPlacaredatagramaestetrimis
saudelacareafostrecepionat
2)...byte[]getData()
Returneaz,ntrunvectordetipbyte,datelecaresunttrimisesaucareaufostrecepionate
3)...intgetLength()
Returneazlungimeapachetuluicarevafitrimissaucareafostrecepionat
4)...intgetPort()
Returneaznumrulportuluilacaredatagramaestetrimissaudelacareafostrecepionat
b)Metodecarepermitsetareaelementelordemaisus,ntrunpachetdatagram
(seutilizeaz,deregul,pentrupachetuldatagramceurmeazafitrimis)
1)...voidsetAddress(InetAddressaddr)
2)...voidsetData(byte[]buf)
3)...voidsetLength(intlength)
4)...voidsetPort(intport)
ClasaDatagramSocket
Obiectele clasei DatagramSocket sunt socketuri prin intermediul crora se face transmisia n
ambelesensuri(intreclientsiserver)
Constructori:
1)publicDatagramSocket()throwsSocketException
creeazunsocketdatagramilasociazunuiportdisponibildepecalculatorullocal.
2)publicDatagramSocket(intport)throwsSocketException
creeazunsocketdatagramilasociazportuluispecificatdepecalculatorullocal.
3)publicDatagramSocket(intport,InetAddressaddr)throwsSocketException
creeazunsocketdatagramilasociazportuluiiadreseispecificate.
Metode:
1)...voidreceive(DatagramPacketpachet)throwsIOException
nchidesocketuldatagramcurent
4)...InetAddressgetLocalAddress()
ReturneazunobiectdetipInetAddresscarereprezintadresalocalpecareafostcreat
socketulcurent
5)...intgetLocalPort()
Returneaznumruldeportasociatsocketuluicurentcreatpegazdalocal
6)...intgetPort()
Returneazportulsocketuluicurentsauvaloarea1dacsocketulnuesteconectat.
7)...InetAddressgetInetAddress()
ReturneazunobiectdetipInetAddresscarereprezintadresalacaresocketulcurenteste
conectat(saunull dacsocketulnuesteconectat).