Documente Academic
Documente Profesional
Documente Cultură
Lab 9
Descriere: Implementarea unei aplicatii client-server Java folosind protocolul UDP. Suport pentru
multicast in Java.
UDP
UDP este un protocol neorientat spre conexiune care transmite datele cu ajutorul protocolului IP.
UDP ofer aplicaiilor acces direct la serviciul de transmitere a datelor dar nu ofer mecanisme de
corectare a erorilor. Spre deosebire de TCP, UDP nu realizeaza o conexiune logica intre cele doua
gazde, ci incapsuleaza informatia in pachete independente (datagrame), impreuna cu adresa
destinatie si numarul portului, si apoi le transmite prin retea.
Programa
Pentru a putea realiza un program care utilizeaza socket-uri trebuie sa importam pachetele java.io
si java.net
Exemplu:
socket.receive(mesaj);
4. Se proceseaza cererea
b) Se construieste raspunsul
Exemplu:
byte[] buf2 = new byte[256];
buf2 = ("...").getBytes();
import java.net.*;
import java.io.*;
//Construieste raspunsul
buf = ("Server:" +
new String(cerere.getData())).getBytes();
try {
//Construieste un socket pentru comunicare
socket = new DatagramSocket();
//Afiseaza raspunsul
System.out.println(new String(packet.getData()));
} finally {
socket.close();
}
}
}
//intoarce pachetul
return new DatagramPacket (data, data.length, InetAddress.getByName(host),
port);
}
Retele de calculatoare I
Problema 1. Realizati o aplicatie client-server care foloseste protocolul UDP. Clientul va cere
serverului timpul si serverul il va furniza.
Problema 2. Realizati o aplicatie client-server care foloseste protocolul UDP. Aplicatia este de
fapt un joc al carui scop este ghicirea unui numar. Atunci cand serverul este pornit el va salva un
numar aleator intre 0 si 100.
int randomNumber=(int)(Math.random()*100);
Diverse situatii impun gruparea mai multor clienti astfel nct un mesaj (pachet) trimis pe adresa
grupului sa fie receptionat de fiecare dintre acestia. Gruparea mai multor programe n vederea
trimiterii multiple de mesaje se realizeaza prin intermediul unui socket special, descris de clasa
MulticastSocket, extensie a clasei DatagramSocket. Un grup de clienti abonati pentru trimitere
multipla este specificat printr-o adresa IP din intervalul 224.0.0.1 - 239.255.255.255 si un port
UDP. Adresa 224.0.0.0 este rezervata si nu trebuie folosita.
import java.net.*;
import java.io.*;
try {
//Se alatura grupului aflat la adresa si portul specificate
socket = new MulticastSocket(port);
socket.joinGroup(group);
System.out.println(new String(packet.getData()));
} finally {
socket.leaveGroup(group);
socket.close();
}
}
}
import java.net.*;
import java.io.*;
try
{
//Trimite un pachet catre toti clientii din grup
buf = (new String("Salut grup")).getBytes();
packet = new DatagramPacket(buf, buf.length, group, port);
socket.send(packet);
} finally {
socket.close();
}
}
}
Bibliografie