Den Java-objekt hierarki inneholder mange klasser som håndterer mange slags datatyper og datatilkoblinger . Den " Socket " og " ServerSocket " klasser representerer enkle forbindelser et Java-program kan gi til et annet program gjennom portene på en datamaskin. Gjennom disse objektene , kan et Java- program mottar data eller meldinger , for eksempel tekst , fra en ekstern datamaskin . Så, for eksempel, ville en enkel chat-klient skrevet i Java kjøre Socket og ServerSocket objekter for å sende og motta meldinger. Chat Server og ServerSocket
På sitt mest grunnleggende , vil en Java chat -server bruker en ServerSocket objekt for å lytte etter en tilkobling. Den "godta "-metoden tvinger programmet til å vente til en tilkobling er opprettet . Denne metoden returnerer en " Socket " objekt som representerer den aksepterte tilkobling. Som illustrert i følgende kode eksempel vil chatte-program alltid lytte til en innkommende forbindelse på en bestemt port og returnere kontakten : en
import java.net.ServerSocket , import java.net.Socket ; import java . io.BufferedReader , import java.io.InputStreamReader ;
klasse Chat {
public static void main ( String [] args ) { ServerSocket s = null; s = new ServerSocket ( 9999) ; Socket s = server.accept (); } }
motta meldinger
Når tilkoblingen er gjort , kan programmereren lese innspill fra stikkontakten . Denne inngangen , meldingen fra en annen skravling, vil lese inn en " BufferedInput " objekt , som deretter lese informasjonen inn i en String variabel : en
BufferedReader inn = new BufferedReader ( ny InputStreamReader ( s.getInputStream ( ) )); String melding = input.readline ();
lagre meldinger
Når du mottar meldinger fra den eksterne datamaskinen , kan det være gunstig å lagre dem i en matrise , slik at en multippel melding ikke er tapt. I praksis hva programmerer kan gjøre er å lagre meldinger i en matrise med en roterende "mens " loop . For hver mottatte melding, vil løkken lagre en melding i rekken og flytte til neste indeks, innpakning rundt til den første indeksen når matrisen er full : en
String [ ] beskjeder = new String [ 20 ]; int index = 0; message = input.readLine ();
mens (melding = null ! ) { meldinger [ index ] = budskap, index + +; message = input.readLine (); }
med Sende meldinger
programmereren kan også bruke socket gjenstander for å koble til en ekstern datamaskin som lytter til kommunikasjon . Ved å bruke kontakten for å koble til, kan programmereren åpne en output stream til å sende en melding til brukeren . Hun oppnår dette ved hjelp av en PrintWriter objekt , knytter den til socket utgang stream og skriving gjennom stikkontakten : en
Socket connect = new Socket ( "http : \\ \\ www.computer.domain " , 9999) ;
ut = new PrintWriter ( connect.getOutputStream ( ) , true); out.print ( "Sender melding ... ");