Java objekthierarki innehåller många klasser som hanterar många sorters datatyper och dataanslutningar . Den " Socket " och " ServerSocket " klasserna representerar enkla anslutningar ett Java -program kan göra till ett annat program via hamnarna i en dator . Genom dessa föremål , kan ett Java -program ta emot data eller meddelanden , såsom text , från en fjärrdator . Så , till exempel , skulle en enkel chat-klient skriven i Java köra Socket och ServerSocket objekt för att skicka och ta emot meddelanden . Chatt-server och ServerSocket
I sin mest grundläggande , kommer en Java-chatt -server använder en ServerSocket objekt att lyssna efter en anslutning . Den " acceptera " metoden tvingar programmet att vänta tills en anslutning har upprättats . Den här metoden returnerar ett " Socket " objekt som representerar den accepterade anslutningen . Såsom illustreras i följande kodexempel kommer chattprogram lyssnar alltid på en inkommande anslutning på en viss port och returnera uttaget :
import java.net.ServerSocket , import java.net.Socket ; import java . io.BufferedReader , import java.io.InputStreamReader ;
klass Chat {
public void main ( String [] args ) { ServerSocket s = null; s = ny ServerSocket ( 9999 ) , Socket s = server.accept ( ) ;} }
emot meddelanden
När anslutningen är gjord , kan programmeraren läsa input från uttaget . Denna ingång , meddelandet från en annan prat , kommer att läsa in en " BufferedInput " objekt , som sedan kan läsa sin information till en String-variabel :
BufferedReader input = new BufferedReader ( ny InputStreamReader ( s.getInputStream ( ) ) ) ; String meddelande = input.readline ( ) ;
lagra meddelanden
När emot meddelanden från fjärrdatorn , kan det vara fördelaktigt att lagra dem i en matris så att en multipel meddelandet inte går förlorad. I praktiken , vad programmeraren kan göra är att lagra meddelanden i en array med en roterande " medan" loop . För varje mottaget meddelande , kommer slingan lagra ett meddelande i gruppen och gå till nästa index , omslag runt till första index när arrayen är full :
String [ ] messages = new String [ 20 ] ; int index = 0; message = input.readLine ( ) ;
samtidigt ( message = null ) { messages [ index ] = budskapet , index + + ; message = input.readLine ( ) ; }
skicka meddelanden
programmeraren kan också använda socket objekt för att ansluta till en fjärrdator som avlyssnar kommunikation . Genom att använda uttag för att ansluta , kan programmeraren öppna en utgående ström för att skicka ett meddelande till användaren . Hon åstadkommer detta genom att använda ett PrintWriter objekt , kopplar den till uttaget s utdataström och skrivande genom socket :
Socket connect = new Socket ( " http : \\ \\ www.computer.domain " , 9999 ) ;
ut = new PrintWriter ( connect.getOutputStream ( ) , true ) ; out.print ( " Skickar meddelande ... " ) ;