Lär dig allt om Socket Programming i Java



Java Socket-programmering används för kommunikation mellan applikationer som körs på olika JRE. Java Socket-programmering kan vara anslutningsorienterad eller anslutningsfri.

Socket programmering i används för kommunikation mellan applikationer som körs på olika . Det kan vara antingen anslutningsorienterat eller anslutningsfritt. Sammantaget är ett uttag ett sätt att upprätta en anslutning mellan en klient och en server. I den här artikeln berättar jag allt om Socket Programming.

Nedanstående ämnen behandlas i den här artikeln:





strängar i java är oföränderliga

Vad är Socket Programming i Java?

Socket programmering är ett sätt att ansluta två noder i ett nätverk för att kommunicera med varandra. Ett uttag (nod) lyssnar på en viss port vid en IP, medan andra uttag når ut till den andra för att skapa en anslutning.

Client Server Communication - Socket Programming in Java - Edureka



Servern bildar lyssnaren uttaget medan klienten når ut till servern. Uttag och serveruttag används för anslutningsorienterad sockelprogrammering.

Låt oss nu förstå kärnkonceptet för Socket Programming, dvs. ett uttag.

Vad är ett uttag i Java?

TILL uttag i är en slutpunkt för en tvåvägs kommunikationslänk mellan två program som körs i nätverket. A uttag är bunden till ett portnummer så att TCP-skiktet kan identifiera den applikation som data är avsedd att skickas till.



En slutpunkt är en kombination av en IP-adress och ett portnummer. Paketet i Java-plattformen ger en klass,Uttagsom implementerar en sida av en tvåvägsanslutning mellan ditt Java-program och ett annat program i nätverket. Klassen sitter på toppen av en plattformsberoende implementering och döljer detaljerna i alla specifika system från ditt Java-program. Genom att använda klassen istället för att förlita sig på inbyggd kod kan din kan kommunicera via nätverket på ett plattformsoberoende sätt.

Nu när du vet, vad är Socket i Java, ska vi gå vidare och förstå hur kommunicerar klienten med servern och hur servern svarar tillbaka.

Programmering på klientsidan

Vid programmering på klientsidan väntar klienten först på att servern startar. När servern är igång skickar den förfrågningarna till servern. Därefter väntar klienten på svaret från servern. Så detta är hela logiken för klient- och serverkommunikation. Låt oss nu förstå klientsidan och serverns programmering i detalj.

För att initiera en klientförfrågan måste du följa stegen nedan:

1. Upprätta en anslutning

Det allra första steget är att upprätta en uttagsanslutning. En sockelanslutning innebär att de två maskinerna har information om varandras nätverksplats (IP-adress) och TCP-port.

Du kan skapa ett uttag med hjälp av nedanstående uttalande:

Sockeluttag = nytt uttag (“127.0.0.1”, 5000)

  • Här representerar det första argumentet Serverns IP-adress .

  • Det andra argumentet representerar TCP-port . (Det är ett nummer som representerar vilket program som ska köras på en server.)

    skillnad mellan html och xml

2. Kommunikation

För att kommunicera via en sockelanslutning används strömmar för både inmatning och utmatning av data. När du har upprättat en anslutning och skickat förfrågningarna måste du stänga anslutningen.

3. Avsluta anslutningen

Sockelanslutningen stängs uttryckligen när meddelandet till servern har skickats.

Låt oss nu se hur man skriver ett Java-program för att implementera sockelanslutning på klientsidan.

// Ett Java-program för en ClientSide-import av java.net. * Import av java.io. * ClientProgram för allmän klass {// initialiserar uttag och ingångsströmmar privat Socket-uttag = null privat DataInputStream-ingång = null privat DataOutputStream ut = null // konstruktör för att sätta ip-adress och port offentlig klient (strängadress, int-port) {// upprätta en anslutning försök {socket = ny uttag (adress, port) System.out.println ('Connected') // tar inmatning från terminalingång ny DataInputStream (System.in) // skickar utdata till uttaget = nytt DataOutputStream (socket.getOutputStream ())} fångst (UnknownHostException u) {System.out.println (u)} fångst (IOException i) {System.out .println (i)} // sträng för att läsa meddelande från inmatning String line = '' // Fortsätt läsa tills 'Over' matas in medan (! line.equals ('Over')) {prova {line = input.readLine ( ) out.writeUTF (line)} catch (IOException i) {System.out.println (i)}} // stäng anslutningen försök {input.close () out.close () socket.close ()} catch (IOException i ) {System.out.println (i)}} offentlig statisk ogiltig huvud (String args []) {Client client = new Client ('127.0.0.1', 5000)}}

Låt oss nu implementera serverns programmering och sedan nå utgången.

Programmering på serversidan

I grund och botten kommer servern att instantiera sitt objekt och vänta på klientförfrågan. När klienten skickar begäran kommunicerar servern tillbaka med svaret.

För att koda applikationen på serversidan behöver du två uttag och de är som följer:

  • TILL ServerSocket som väntar på klientförfrågningarna (när en klient gör ett nytt uttag ())

  • En vanlig gammal uttag för kommunikation med klienten.

Efter detta måste du kommunicera med klienten med svaret.

Kommunikation

getOutputStream () metoden används för att skicka utgången genom uttaget.

Stäng anslutningen

vad är skillnaden mellan abstrakt klass och gränssnitt

Det är viktigt att stänga anslutningen genom att stänga uttaget såväl som in / ut-strömmar när allt är klart.

Låt oss nu se hur man skriver ett Java-program för att implementera uttagsanslutning på serversidan.

// Ett Java-program för en serverimport java.net. * Importera java.io. * Public class ServerSide {// initialisera uttag och ingångsström privat Socket-uttag = null privat ServerSocket-server = null privat DataInputStream in = null // konstruktör med port public Server (int-port) {// startar server och väntar på en anslutning försök {server = new ServerSocket (port) System.out.println ('Server started') System.out.println ('Waiting for a client .. . ') socket = server.accept () System.out.println (' Client accepterad ') // tar inmatning från klientuttaget i = new DataInputStream (new BufferedInputStream (socket.getInputStream ())) Stränglinje =' '/ / läser meddelande från klienten tills 'Over' skickas medan (! line.equals ('Over')) {try {line = in.readUTF () System.out.println (line)} fångst (IOException i) {System. out.println (i)}} System.out.println ('Stänga anslutning') // stäng anslutningsuttaget. stäng () in.close ()} fånga (IOException i) {System.out.println (i)}} public static void main (String args []) { Serverserver = ny server (5000)}}

Efter att du har konfigurerat både klient- och serveränden kan du köra serversidaprogrammet först. Därefter måste du köra klientsidan och skicka begäran. Så snart begäran skickas från klientänden svarar servern tillbaka. Nedanstående ögonblicksbild representerar samma.

1. När du kör serverns skript startar det och väntar på att klienten ska komma igång.

2. Därefter kommer klienten att anslutas och mata in begäran i form av en sträng.

3. När klienten skickar begäran svarar servern tillbaka.

Så här måste du köra ett sockelprogram i Java. Du kan också köra dessa program i ett terminalfönster eller en kommandotolk. Men eftersom Eclipse är mycket avancerat med sina funktioner kan du helt enkelt köra båda programmen på en konsol.

Detta leder oss till slutet av artikeln om Socket Programming i Java. Jag hoppas att jag har kastat lite ljus på din kunskap Socket-programmering.

Kolla in av Edureka, ett pålitligt inlärningsföretag online med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Vi är här för att hjälpa dig med varje steg på din resa, för att bli en förutom de här Java-intervjufrågorna, kommer vi med en läroplan som är utformad för studenter och yrkesverksamma som vill vara Java-utvecklare.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i den här artikeln 'Socket Programming in Java' så återkommer vi till dig så snart som möjligt.