|
|
|
![]() |
|
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: 20:59.