Sunteți pe pagina 1din 5

import java.util.

*;
public class TestareTokenRing {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//lista calculatoarelor din retea
ArrayList <Calculator> retea= new ArrayList<>();
//vector cu 9 adrese IP
String []adrese=new String[]
{"192.178.11.3","192.178.14.7","192.178.15.6","192.178.30.12",
"192.178.24.1","193.178.15.19","154.178.15.10","129.178.15.21","192
.178.15.4","192.178.15.8"};
//se creaza calculatoarele cu buffer empty
for (int i=0;i<10;i++)
{
Calculator c=new Calculator(adrese[i],"");
retea.add(c);
}
//afistam calculatoarele n retea
for (int i=0;i<retea.size();i++)
{
System.out.println("Pozitia "+i+": "+retea.get(i));
}
//generarea pozitiilor in mod aleatoriu
Random r=new Random();
int pozSursa;//returneaza un nr intre 0 si 9
int pozDestinatie;
do
{
pozSursa=r.nextInt(retea.size());
pozDestinatie=r.nextInt(16);
if (pozDestinatie>9)
{
System.out.println("pozDestinatie="
+pozDestinatie+".Destinatia nu se gaseste in retea!");
}
if (pozSursa==pozDestinatie)
{
System.out.println("Nu se poate transmite mesaj propriri
surse!");
}
}
while (pozSursa==pozDestinatie || pozDestinatie>9);
System.out.println("Pozitia generata pentru sursa este: "+pozSursa);
System.out.println("Pozitia generata pentru destinatie este: "+pozDestinatie);
//se citeste mesajul de la tastatura
System.out.println("Introduceti mesajul care se treansmite: ");
String mesaj=sc.nextLine();
//cream un obiect de tip jeton
Jeton jeton =new Jeton(false,
mesaj,retea.get(pozSursa).getAdresaIP(),retea.get(pozDestinatie).getAdresaIP());
//acum parcurgem sa gasim destinatia
if (pozSursa<pozDestinatie)

{
for (int i=pozSursa;i<=pozDestinatie;i++)
{
if(retea.get(pozDestinatie).getAdresaIP().equals(retea.get(i).getAdresaIP()))
{
retea.get(i).setBuffer(mesaj);
jeton.setAjunsDestinatie(true);
System.out.println("Mesajul a ajuns la destinatie! ");
System.out.println("Mesajul este: "+mesaj);
System.out.println("Jetonul este: "+jeton);
}
}
for (int i=pozDestinatie;i>=pozSursa;i--)
{
if(retea.get(pozSursa).getAdresaIP().equals(retea.get(i).getAdresaIP()))
{
if(jeton.isAjunsDestinatie()==true)
{
//sursa elibereaza jetonul daca acesta a ajuns la
destinatie
jeton.setLiber(true);
System.out.println("Sursa a verificat sa mesajul a ajuns
la destinatie si a eliberat jetonul!");
System.out.println("Mesajul este: "+mesaj);
System.out.println("Jetonul este: "+jeton);
}
}
}
}
else
{
//parcurgere pt a gasi destinatia
for (int i=pozSursa;i>=pozDestinatie;i--)
{
if(retea.get(pozDestinatie).getAdresaIP().equals(retea.get(i).getAdresaIP()))
{
retea.get(i).setBuffer(mesaj);
jeton.setAjunsDestinatie(true);
System.out.println("Mesajul a ajuns la destinatie! ");
System.out.println("Mesajul este: "+mesaj);
System.out.println("Jetonul este: "+jeton);
}
}
//parcurgere de la destinatie inapoi la sursa
for (int i=pozDestinatie;i<=pozSursa;i++)
{
if(retea.get(pozSursa).getAdresaIP().equals(retea.get(i).getAdresaIP()))
{
if(jeton.isAjunsDestinatie()==true)
{
//sursa elibereaza jetonul daca acesta a ajuns la
destinatie
jeton.setLiber(true);

System.out.println("Jeton eliberat");
System.out.println("Mesajul este: "+mesaj);
System.out.println("Jetonul este: "+jeton);
}
}
}

public class Jeton {


private boolean ajunsDestinatie;
private String mesajTransmis;
private String ipSursa;
private String ipDestinatie;
private boolean liber;
public boolean isAjunsDestinatie() {
return ajunsDestinatie;
}
public void setAjunsDestinatie(boolean ajunsDestinatie) {
this.ajunsDestinatie = ajunsDestinatie;
}
public String getMesajTransmis() {
return mesajTransmis;
}
public void setMesajTransmis(String mesajTransmis) {
this.mesajTransmis = mesajTransmis;
}
public String getIpSursa() {
return ipSursa;
}
public void setIpSursa(String ipSursa) {
this.ipSursa = ipSursa;
}
public String getIpDestinatie() {
return ipDestinatie;
}
public void setIpDestinatie(String ipDestinatie) {
this.ipDestinatie = ipDestinatie;
}
public boolean isLiber() {
return liber;
}
public void setLiber(boolean liber) {
this.liber = liber;
}
public Jeton(boolean ajunsDestinatie, String mesajTransmis, String ipSursa,
String ipDestinatie, boolean liber) {
this.ajunsDestinatie = ajunsDestinatie;
this.mesajTransmis = mesajTransmis;

this.ipSursa = ipSursa;
this.ipDestinatie = ipDestinatie;
this.liber = liber;
}
public Jeton(boolean ajunsDestinatie, String mesajTransmis, String ipSursa,
String ipDestinatie) {
this.ajunsDestinatie = ajunsDestinatie;
this.mesajTransmis = mesajTransmis;
this.ipSursa = ipSursa;
this.ipDestinatie = ipDestinatie;

}
public String toString() {
return "Jeton [ajunsDestinatie=" + ajunsDestinatie + ", mesajTransmis="
+ mesajTransmis + ", ipSursa=" + ipSursa + ", ipDestinatie="
+ ipDestinatie + ", liber=" + liber + "]";
}
}

_____________________________________________________________________________________
public class Calculator {
private String adresaIP;
private String buffer;
public Calculator(String adresaIP, String buffer) {
this.adresaIP = adresaIP;
this.buffer = buffer;

}
public Calculator()
{
this.adresaIP = "";
this.buffer = "";
}
public Calculator(String adresaIP)
{
this.adresaIP = adresaIP;
}
public String getAdresaIP() {
return adresaIP;
}
public void setAdresaIP(String adresaIP) {
this.adresaIP = adresaIP;
}
public String getBuffer() {
return buffer;
}
public void setBuffer(String buffer) {
this.buffer = buffer;
}
public String toString() {
return "Calculator [adresaIP=" + adresaIP + ", buffer=" + buffer + "]";
}
}

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