Java socket objecten worden gebruikt om verbindingen tussen twee machines vertegenwoordigen . Echter , een programma met behulp van sockets kan verzanden als het programma wacht op een verbinding te stellen . In dat geval kunt u afgesplitst een aparte thread van executie die wacht op een verbinding, terwijl het hoofdprogramma loopt nog . Door de uitbreiding van dit, kunt u de aparte thread gebruiken om de aansluitingen voor verbindingen controleren en hen te behandelen , alleen een kennisgeving aan de programma wanneer een verbinding wordt gemaakt of een andere significante zelfs gebeurt . Belangrijkste ServerSocket Voorbeeld Om een poort te luisteren via een stopcontact , een " SocketServer " object . Socket servers luisteren naar verbindingen op een specifieke poort . Na ontvangst van de verbindingsgegevens op die poort , de Socket Server retourneert een " Socket " object . Alle ontvangen over de verbinding gegevens kunnen worden verwerkt via dat socket object . Discussies Threads zijn instanties van uitvoeren van code in een programma . Deze draden van uitvoering kan de gelijktijdige werking van code , waardoor code kan worden geschreven voeren tegelijkertijd door verschillende threads . Dus, bijvoorbeeld , een programma dat wenst om een soort van achtergrond state -of -verbinding te controleren kan een thread die dit doet maken , en bel de rode draad als er iets verandert of een aansluiting plaatsvindt . < Br > Luisteren naar Ports met Draden Door het opzetten van een andere thread , kunt u code die de aansluiting op de achtergrond bewaakt , terwijl het hoofdprogramma uitvoert creëren . Bijvoorbeeld , kon u een klasse die de " Runnable " klasse breidt uit te voeren, en voer het uit als een aparte thread te draaien in de achtergrond , het luisteren naar een haven : private static class SocketListen implementeert Runnable { public void run ( ) { try { listenSocket = new ServerSocket ( 9999 ) ; //luisteren naar poort 9999 } catch ( IOException e ) { System.exit ( -1 ) ; //error } Socket clientSocket = null ; try { ontvangen = serverSocket.accept ( ) ; //aansluiting object als succes } catch ( IOException e ) { System.exit ( -1 ) ; //error } } } Splitting de draad < br > als je een uitvoerbare klasse die als een luisterend /toezicht -agent hebt gedefinieerd , alles wat overblijft is om het te gebruiken als een draad . Het hoofdprogramma kan een aparte thread , als onderdeel van de uitvoering ervan , dat de socket luisteren code zal lopen bellen . Zodra de code is voltooid , hetzij als gevolg van aansluiting succes of fout , het toezicht draad weer bij de rode draad . De rode draad loopt een lus te wachten totdat de controle draad afwerkingen : Thread t = new Thread ( nieuw SocketListen ( ) ) ; t.start ( ) ; terwijl ( t.isAlive ( ) ) { threadMessage ( " nog steeds wachten ... " ) ; t.join ( 1000 ) ; //wacht een seconde voordat het herhalen lus }
|