Java socket gjenstander brukes til å representere forbindelser mellom to maskiner . Imidlertid kan et program ved hjelp av stikkontakter bli låst fast hvis programmet venter på en tilkobling for å etablere. I dette tilfellet kan du skilt ut en egen tråd for henrettelse som venter på en tilkobling mens hovedprogrammet fortsatt går . Ved å utvide dette , kan du bruke egen tråd for å overvåke kontakter for tilkobling og håndtere dem , bare varsle programmet når det gjøres en tilkobling eller et annet betydelig allerede skjer. Hoved ServerSocket Eksempel
For å lytte til en port gjennom en socket , lage en " SocketServer " objekt . Socket Servere lytte etter tilkoblinger på en bestemt port . Ved mottak av tilkoblingsinformasjon på denne porten , returnerer Socket Server en " Socket " objekt . Eventuelle data som mottas over forbindelsen kan bli behandlet gjennom den kontakten objekt .
Tråder
Tråder er tilfeller av å kjøre kode inne i et program . Disse tråder gjennomføring tillate den samtidige drift av koden , slik at koden kan være skrevet for å utføre samtidig gjennom forskjellige tråder . Så, for eksempel , kan et program som ønsker å overvåke en slags bakgrunn stat eller tilkobling opprette en tråd som gjør dette , og kaller den viktigste tråden når noe endres eller en forbindelse oppstår .
Lytte til porter med tråder
Ved å sette opp en annen tråd , kan du lage kode som overvåker kontakten i bakgrunnen mens hovedprogrammet utfører . For eksempel kan du gjennomføre en klasse som utvider " kjørbart " class , og kjøre den som en egen tråd for å kjøre i bakgrunnen og lytter til en port : en
privat statisk klasse SocketListen implementerer kjørbart { public void kjøre ( ) { try { listenSocket = new ServerSocket ( 9999 ), //lytte til port 9999 } catch ( IOException e ) { System.out.println ( -1 ), //error}
Socket clientSocket = null; try { mottatt = serverSocket.accept (); //tilkobling objekt hvis suksess } catch ( IOException e ) { System.out.println ( -1 ), //error} } }
Splitting den tråden
p Hvis du har definert et kjørbart klasse å bruke som en lytter /overvåkning agent, er alt som gjenstår å bruke den som en tråd . Hovedprogrammet kan kalle en egen tråd som en del av kjøringen som vil kjøre kontakten lytter koden . Når koden er ferdig, enten på grunn av tilkobling suksess eller feil , rejoins overvåking tråden hovedtråden . Hovedtråden kjører en ventende løkke til overvåking tråden utførelser :
Thread t = new Thread (new SocketListen ( )); t.start ();
while ( t.isAlive ( ) ) { threadMessage ( "Still waiting ... "); t.join (1000), //venter ett sekund før du gjentar løkken }