 |
yeah |
.grande:maestro.

Registered: Nov 2003
Posts: 1644 (0.21 al dì)
Location: Cologno Monzese
Corso: Informatica Magistrale
Anno: II
Time Online: 12 Days, 21:36:41 [...]
Status: Offline
Edit | Report | IP: Logged |
Posto la mia soluzione, naturalmente non è l'unica 
Server - Server.java
code:
import java.net.*;
import java.io.*;
class Server
{
public static void main(String args[])
{
ServerSocket listener = (ServerSocket) null; //necessario altrimenti potrebbe non essere inizializzato
Socket established;
try
{
//Apertura socket di ascolto
listener = new ServerSocket(7000, 300);
}
catch(IOException e) {}
while(true)
{
try
{
System.out.println("Server: In attesa di connessioni...");
established = listener.accept();
/*
* Accettazione richiesta di connessione
* e passaggio del socket creato ad un nuovo thread
*/
System.out.println("Server: Connessione accettata e lancio nuovo thread");
(new CliManager(established)).start();
}
catch(Exception e) {}
}
//listener.close(); //codice irraggiungibile a causa del while(true)
}
}
Gestione tramite thread - CliManager.java
code:
import java.net.*;
import java.io.*;
import java.util.Random;
class CliManager extends Thread
{
private Socket passedSocket;
private String toSend;
private OutputStream sock_out;
private static Random rand; // Generatore di numeri casuali
public CliManager(Socket s) throws Exception
{
System.out.println("CliManager: Creazione nuovo CliManager " + getName());
toSend = "Hello Net World!\n";
/*
* Ricezione del socket creato dal server
* e ottenimento dello stream di output
*/
passedSocket = s;
sock_out = s.getOutputStream();
rand = new Random();
}
public void run()
{
int slength;
try
{
System.out.println(getName() + ": Inizio invio dati al client");
slength = toSend.length();
//Invio carattere per carattere della stringa
for(int i = 0; i < slength; i++)
{
sock_out.write((int) toSend.charAt(i));
sleep((rand.nextInt(4) + 1) * 500); //Attesa casuale tra 0.5 e 2 secondi
}
System.out.println(getName() + ": Fine invio dati al client");
passedSocket.close();
}
catch(Exception e) {}
}
}
Come client ho usato quello visto a lezione
Tuttavia non sono riuscito a mettere il 'throws' a run(), in quanto il compilatore dice che non si può porre in overload il metodo run() poichè la versione ereditata non fa il 'throws'.
__________________
?
|