Nwlapcug.com


Presa monitorando con Java

Gli oggetti Java socket vengono utilizzati per rappresentare le connessioni tra due macchine. Tuttavia, un programma che utilizza socket può diventare impantanato se il programma attende una connessione stabilire. In questo caso, è possibile dividere un thread separato di esecuzione che attende una connessione mentre il programma principale viene eseguito ancora. Estendendo in questo modo, è possibile utilizzare il thread separato per monitorare i socket per le connessioni e gestirli, solo notificare il programma quando viene effettuata una connessione o un altro significativo anche accade.

ServerSocket principale esempio

Per ascoltare una porta tramite un socket, creare un oggetto "SocketServer". Server socket in attesa di connessioni su una porta specifica. Al ricevimento delle informazioni di connessione su quella porta, il Server Socket restituisce un oggetto di "Presa". Tutti i dati ricevuti tramite la connessione possono essere elaborati tramite tale oggetto socket.

Discussioni

I thread sono istanze di esecuzione del codice all'interno di un programma. Questi thread di esecuzione consentono l'esecuzione simultanea di codice, che significa che è possibile scrivere codice per eseguire allo stesso tempo attraverso diversi thread. Così, ad esempio, un programma che si desidera monitorare una sorta di stato background o connessione può creare un thread che fa questo e chiamare il thread principale quando cambia qualcosa o si verifica una connessione.

Ascolto di porte con discussioni

Impostando un altro thread, è possibile creare codice che controlla la presa sullo sfondo mentre è in esecuzione il programma principale. Ad esempio, si potrebbe implementare una classe che estende la classe "Praticabile" ed eseguirlo come un thread separato per eseguire in background, ascoltando una porta:

Private NotInheritable class SocketListen implements Runnable {

public void run() {

try {

listenSocket = new ServerSocket(9999); //listen to port 9999

} catch (IOException e) {

System.exit(-1); //error

}

Presa clientSocket = null;
try {

received = serverSocket.accept(); //connection object if success

} catch (IOException e) {

System.exit(-1); //error

}

}
}

Spaccare il Thread

Se è stata definita una classe eseguibile da utilizzare come un agente di ascolto/monitoraggio, tutto ciò che rimane è di usarlo come un thread. Il programma principale può chiamare un thread separato come parte della sua esecuzione che eseguirà il socket in ascolto codice. Una volta che il codice termina, a causa di successo di connessione o errore, il thread di monitoraggio si ricongiunge il thread principale. Il thread principale viene eseguito un ciclo di attesa fino al termine il thread di monitoraggio:

Thread t = new Thread (new SocketListen());

t.start();

while (t.isAlive()) {
threadMessage("Still waiting...");
t.join(1000); //waits one second before repeating loop
}