Java/Socket: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m aggiunta di materiale
Riga 41:
int porta = server.getLocalPort();
 
A livello di sviluppo l'implementazione corretta di un programma che fa da server prevede, dopo l'inizializzazione del server, un ciclo, possibilmente infinito o condizionato da uscita del programma, di ascolto del client, creando ad ogni ciclo un oggetto socket che permetterà di avere il contatto con il client e gestire la chiamata, tramite la lettura della DataInputStream.
 
Un esempio di programmazione del server è:
 
static public void start() throws IOException
{
//inizializzazione dell'oggetto ServerSocket
ServerSocket serverFather = new ServerSocket(9999);
//recupero info su server
InetAddress info = serverFather.getInetAddress();
String server = info.getHostAddress();
int port = serverFather.getLocalPort();
System.out.println("Nome:"+ server + " Porta:"+ port);
//ciclo infinito
while (true)
{
System.out.println("Il server va in sleep...");
//accesso le richieste del client
Socket socket = serverFather.accept();
System.out.println("Il server si sveglia...");
//trovo le info sul client
InetAddress infoclient = socket.getInetAddress();
String client = infoclient.getHostAddress();
int portclient = socket.getLocalPort();
System.out.println("Il client " + client + " " + portclient + " ha svegliato il server...");
//apro il canale di comunicazione con il client
DataInputStream is = new DataInputStream(socket.getInputStream());
DataOutputStream os = new DataOutputStream(socket.getOutputStream());
//leggo i dati scritti, l'uscita viene dettata dalla stringa QUIT
while (true)
{
String clientInput = is.readLine();
if ((clientInput == null) || (clientInput.equals("QUIT")))
break;
os.writeBytes(clientInput + "\n");
System.out.println("Il client ha scritto " + clientInput);
}
is.close();
os.close();
socket.close();
System.out.println("Il client è stato soddisfatto...il server torna a dormire...");
}
}
[[Categoria:Java]]
 
 
== Socket Lato Client