Sunteți pe pagina 1din 3

Comunicareaneorientatpeconexiune(folosinddatagrame)

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

Recepioneaz un pachet datagram la socketul curent. Recepionarea se face n pachetul


specificat ca argument. Dac datagrama recepionat are lungimea mai mare dect lungimea
tamponuluidestinatrecepiei,atuncidatagramavafitrunchiat.
Metoda blocheaz (stopeaza) execuia aplicaiei (de fapt, firul de execuie curent) pn cnd se
recepioneazodatagram.
2)...voidsend(DatagramPacketpachet)throwsIOException

transmitede la socketul curentunpachetdatagram.Pachetultrebuiepregtit nprealabil astfel


nct s conin datele transmise, adresa IP i portul calculatorului unde trebuie s ajung
datagrama.
3)...voidclose()

nchidesocketuldatagramcurent
4)...InetAddressgetLocalAddress()

ReturneazunobiectdetipInetAddresscarereprezintadresalocalpecareafostcreat
socketulcurent
5)...intgetLocalPort()

Returneaznumruldeportasociatsocketuluicurentcreatpegazdalocal
6)...intgetPort()

Returneazportulsocketuluicurentsauvaloarea1dacsocketulnuesteconectat.
7)...InetAddressgetInetAddress()

ReturneazunobiectdetipInetAddresscarereprezintadresalacaresocketulcurenteste
conectat(saunull dacsocketulnuesteconectat).

S-ar putea să vă placă și