Documente Academic
Documente Profesional
Documente Cultură
Comunicarea fr conexiune
Comunicarea de grup
- returneaz
numele calculatorului cruia i corespunde
obiectul InetAddress curent
public String getHostName()
- returneaz
adresa IP a obiectului InetAddress curent n
form binar primar
public byte[] getAddress ()
Exemplu:
import java.net.*;
public class TestInetAddress {
public static void main(String[] args) {
while ((i<adrese.length)){
System.out.println(adrese[i].getHostAddress());
i++;
ca tablou
toate adresele IP ale calculatorului parametru
Object
InetAddress
Throwable
URL
Socket
Exception
ServerSocket
MalformedURLException
DatagramPacket
DatagramSocket
URLConnection
ProtocolException
MulticastSocket
HttpURLConnection
UnknownHostException
UnknownServiceException
SocketException
SocketImpl
BindException
NoRouteToHostException
ConnectionException
ClasaURLoferfacilitipentrucreareaimanipularea
locatoriloruniversalideresurse.Formacomplet
pentruunURL:
protocol://nume_calculator:port/nume_de_cale#ref
nmodnormalnume_de_calereprezintunnumede
ier,acruiinterpretareedependentdeprotocoli
decalculator.Poateialtcevadectier
URLConnecKoncarereprezintoconexiunela
obiectulladistanreferitdeURLulcurent.
curentireturneazunuxdeintrarepentruaciK
dinaceastconexiune.Echivalentcu:
ClasaURLare4constructori:
openConnection().getInputStream()
ireprezintexprimareaprescurtata
interpretareaspecncontextuldat
ClasaURLreimplementeazmetodelehashCode,
equalsitoString
Principalelemetode:
openConnection().getContent()
ClasaURLConnectionimplicatnmetodele
prezentatemaisus,conineimetodele
getContent() igetInputStream(),
deniteasOel:
returneazconinutulacesteiconexiuniURL
citetedinaceastconexiune
5.2.Comunicareaorientatpeconexiune:clasele Socket i
ServerSocket
ClasaSocketconineconstructoriimetode
pentrusocketuriclient.Principaliiconstructori:
creeazunsocketserverlaportulspecicat.Dac
sepune0laportsefoloseteoriceportdisponibil.
Sexeazimplicitcapacitateacoziideateptare
pentrucererila50.
creeazunsocketilconecteazlacalculatoruli
portulspecicate
deateptare
asocketului
Principalelemetode:
speciciadresaInternetlocalprincarese
acceptcereri(daceste0seacceptprinoricare
dintreadreseleunuinodmulKhome
socketului
socketului
PrinciKredinuxuldeintrare,respecKvscrieren
uxuldeieireserealizeazcomunicareprinsocket
ClasaServerSocketare3constructori:
Metodaspecic:
ateaptocereredeconectareioaccept.
Metodaproduceblocareaprocesului(rului)
apelantpnlasosireauneicereri.Metoda
returneazunsocketclientprincaresedesfoar
comunicareacusolicitantuldeconectareacceptat
Aplicaiaesteunservercuecou.Programulserverare
codul:
import java.net.*;
Colulsursalunuiclient:
import java.net.*;
import java.io.*;
import java.io.*;
public class EchoServer {
while(true) {
DataInputStream in = new
DataInputStream(client.getInputStream());
while (!
(mes=in.readUTF()).startsWith(GATA))
iesire.writeUTF(mesout);
mesin = intrare.readUTF();
System.out.println(mesin);
client.close(); }
if(!(mesout.startsWith(GATA!))){
5.2.4.Exemplecuservereconcurente
Serescrieexemplulanterior,cugenerareaunuinou
rdeexecuiepentruecareconectare.
String co=Integer.toString(contor);
while(true){
while(!gata){
mes = in.readUTF();
new ThreadEcho(client, c).start();}
if(mes.startsWith(GATA!)){
}}
Codulruluideexecuie:
out.writeUTF(GATA!!!);gata=true;}
}
insock.close();
}
}
5.3.Comunicareafrconexiune.Clasele
DatagramSocketiDatagramPacket
ClasaDatagramPacketreprezintunpachet
datagramiesteprevzutcu2constructorii
metodeaccesor.Constructoriisunt:
ClasaDatagramSocketesteprevzutcu
constructorii:
creeazunsocketdatagramilleaglaoriceport
disponibilpecalculatorullocal
local
construieteunpachetdatagrampentruatrimite
pachetelacalculatoruliportulspecicate
Dintremetodeleaccesorseremarc:
parteadedatedindatagramacurent
stabileteconinutulpriidedatedindatagram
lungimeadatelordindatagramacurent
stabiletelungimeadatelordindatagramacurent
Metodeleprincipale:
estsocket.Pachetulconinedate,lungime,adresai
portuldedesKnaie
pachetdatagram.Larevenirentamponsea
datele,dariadresaiportulemitorului.Se
executcublocare
returneazadresaIPacalculatoruluilacarese
trimitesaudeundesaprimitdatagrama
Suntmetodeasemntoareipentruparteadeport
adresaIPlocallacareelegatsocketulcurent
5.3.3.Exempludeaplicaiefrconexiune
Seconsidertotaplicaiacumesajetrimisenecou.
ClientulconstruietemesajeciKndocteidinierul
standarddeintrare,letrimiteserveruluiprinsocket
datagramirecepioneazecouldelaserver
Codulserverului:
Interaciuneacuecareclientsedesfoarseparat
pentruecaredatagram.Codulclientului,
presupunndcecaremesajsecitetedinintrarea
standard:
try{socket=new DatagramSocket();
}catch(IOException e){}
try{ds=new DatagramSocket
(Integer.parseInt(args[0]));
try{System.in.read(sendBuf);
while(true) {
}catch(IOException e){}
if(socket != null){
ds.receive(dpr);ia=dpr.getAddress();
try{port=Integer.parseInt(args[1]);
port=dpr.getPort();buf=dpr.getData();
dps=new DatagramPacket(buf, buf.length,
ia, port); ds.send(dps); }
}catch (IOException e){}
address=InetAddress.getByName(args[0]);
packet=new DatagramPacket(sendBuf, 256,
address, port); socket.send(packet);
//get and print response
}}
catch(IOException e){}
}}}
5.4.Comunicareadegrup(mulKcast).Clasa
MulticastSocket
ClasaMulticastSocketderivdin
DatagramSocketiarefacilitisuplimentare
pentruataarealagrupuridecomunicaii.
ClasaMulticastSocketaredoiconstructori:
creeazunsocketmulKcastcareseleaglaorice
portdisponibil
leaglaportulspecicat
Metodeleclasei:
membrualgrupuluispecicat
retragedingrup
pachetladesKnaie,cuunTTLdiferitdeal
socketului.DacnuenecesarTTLdiferitsepoate
folosimetodasend()aclasei
DatagramSocket
StructuradeprogramKpicpentrucomunicarea
mulKcast: