Java Socket-Objekte verwendet werden, um Verbindungen zwischen zwei Maschinen vertreten . Allerdings kann ein Programm über Sockets festgefahren werden , wenn das Programm wartet auf eine Verbindung zu etablieren. In diesem Fall können Sie abgespalten einen separaten Thread der Ausführung , die für eine Verbindung wartet, während das Hauptprogramm läuft immer noch . Durch die Erweiterung dieser , können Sie mit dem separaten Thread , um die Anschlüsse für Verbindungen zu überwachen und mit ihnen umgehen , nur Benachrichtigung des Programms, wenn eine Verbindung hergestellt wird oder ein weiterer wichtiger noch passiert. Haupt ServerSocket Beispiel
Um zu einem Hafen über eine Socket hören , ein " SocketServer " Objekt . Socket-Server anhören Verbindungen auf einem bestimmten Port . Beim Empfang von Verbindungsinformationen an diesem Port , kehrt das Socket Server ein "Socket "-Objekt . Alle Daten über die Verbindung empfangen werden durch das Socket -Objekt verarbeitet werden.
Themen
Themen sind Instanzen Ausführen von Code innerhalb eines Programms . Diese Ausführungs-Threads ermöglicht den gleichzeitigen Betrieb von Code , was bedeutet, dass der Code geschrieben werden , um gleichzeitig durch verschiedene Threads ausgeführt werden. So, zum Beispiel , kann ein Programm, das eine Art von Hintergrund Zustand oder die Verbindung zu überwachen wünscht einen Thread erstellen , die dies tut, und rufen Sie die Haupt-Thread , wenn sich etwas ändert oder eine Verbindung tritt .
Hören Ports mit Threads
Durch die Einrichtung weiterer Thread können Sie Code, der die Buchse im Hintergrund überwacht , während das Hauptprogramm ausführt . Zum Beispiel könnten Sie implementieren eine Klasse, die " Runnable " -Klasse erweitert , und führen Sie es als separaten Thread im Hintergrund laufen , hören zu einem Hafen :
private static class SocketListen implementiert Runnable { public void run () { try { listenSocket = new ServerSocket ( 9999) //auf Port 9999 hört } catch ( IOException e) { System.exit (-1) ; //error}
Sockel clientSocket = null; try { received = serverSocket.accept (); //Connection-Objekt , wenn der Erfolg } catch ( IOException e) { System.exit (-1) ; //Fehler }}}
Splitting der Thread
Wenn Sie ein lauffähiges Klasse als hören /Monitoring Agent verwenden definiert haben, ist alles, was bleibt , um es als einen Thread verwenden . Das Hauptprogramm aufrufen können einen separaten Thread als Teil seiner Ausführung , dass die Steckdose hören Code ausgeführt wird. Sobald der Code abgeschlossen ist, entweder aufgrund von Verbindungsproblemen Erfolg oder Fehler , erwidert die Überwachung Thread den Haupt-Thread . Der Haupt-Thread läuft eine Warteschleife , bis die Überwachung Thread Ausführungen:
Thema t = new Thread (new SocketListen ()); t.start ();
while ( t.isAlive () ) { threadMessage ( " Still waiting ..."); t.join (1000); //wartet eine Sekunde vor Endlosschleife }