|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
[Java] Appello Reti di Calcolatori
Ciao a tutti, di seguito riporto la traccia di un esercizio di un vecchio appello di reti di calcolatori della mia università:
Quote:
Classe Slave da installare su ogni singola macchina Slave: Codice:
import java.net.*;
import java.io.*;
import java.util.*;
public class Slave{
public static final int PORT=2222;
public static void main(String args[]){
try{
while(true){
ServerSocket serverSocket=new ServerSocket(PORT);
//attesa comando
Socket socket=serverSocket.accept();
//creazione stream in input
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//creazione stream in output
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
PrintWriter out=new PrintWriter(bw, true);
//controllo comando
if(in.readLine().equals("START ACTIVITY")){
Thread.sleep(15000); //simulo lo svolgimento dell'attività
out.println("ACTIVITY OVER");
}else{
out.println("COMMAND ERROR");
}
//chiudo le risorse
in.close();
out.close();
serverSocket.close();
socket.close();
}//while
}catch(Exception e){ System.out.println(e); }
}//run
}
Codice:
import java.net.*;
import java.util.*;
import java.io.*;
public class Master{
public static void main(String args[]){
int nSlave=9;
boolean slaveLiberi[]=new boolean[nSlave];
//inizialmente tutti liberi
for(int i=0; i<nSlave; i++){
slaveLiberi[i]=true;
}
try{
while(true){
//creo il datagram socket sulla porta 1111
DatagramSocket ds=new DatagramSocket(1111);
byte buf[]=new byte[256];
DatagramPacket packet=new DatagramPacket(buf, buf.length);
//mi metto in attesa di una richiesta
ds.receive(packet);
//arrivata la richiesta controllo se ci sono slave liberi
int x=-1;
for(int i=0; i<nSlave; i++){
if(slaveLiberi[i]==true){
x=i;
slaveLiberi[i]=false;
break;
}
}
//se non ce ne sono
if(x==-1){
String s="SYSTEM BUSY";
buf=s.getBytes();
//prendo indirizzo e porta del richiedente e gli invio SYSTEM BUSY
InetAddress address=packet.getAddress();
int portClient=packet.getPort();
DatagramPacket packet2=new DatagramPacket(buf, buf.length, address, portClient);
ds.send(packet2);
}else{ //se c'è uno slave libero creo la connessione verso di lui
String ipSlave="150.100.100.10"+x;
InetAddress addressSlave=InetAddress.getByName(ipSlave);
Socket socket=new Socket(addressSlave, 2222);
String s="START ACTIVITY";
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
PrintWriter out=new PrintWriter(bw, true);
out.println(s); //gli invio il comando di partire
//attendo risposta
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(in.readLine());
}
}//while
}catch(Exception e){
System.out.println(e);
}
}
}
__________________
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:55.



















