Weet alles over Socket Programming in Java



Java Socket-programmering wordt gebruikt voor communicatie tussen de applicaties die op verschillende JRE draaien. Java Socket-programmering kan verbindingsgericht of verbindingsloos zijn.

Socket programmeren in wordt gebruikt voor communicatie tussen de applicaties die op verschillende . Het kan verbindingsgericht of verbindingsloos zijn. Over het algemeen is een socket een manier om een ​​verbinding tot stand te brengen tussen een client en een server. In dit artikel vertel ik je alles over Socket Programming.

Onderstaande onderwerpen komen aan bod in dit artikel:





Wat is socketprogrammering in Java?

Socket programmeren is een manier om twee knooppunten op een netwerk met elkaar te verbinden om met elkaar te communiceren. een stopcontact (node) luistert op een bepaalde poort op een IP, terwijl andere stopcontact reikt naar de ander om een ​​verbinding te vormen.

Client Server Communicatie - Socket Programmeren in Java - Edureka



De server vormt de luisteraar socket terwijl de cliënt neemt contact op met de server. Socket en server-socket worden gebruikt voor aansluitgerichte programmering van stopcontacten.

Laten we nu eens kijken naar het kernconcept van Socket Programming, d.w.z. een socket.

Wat is een socket in Java?

NAAR stopcontact in is een eindpunt van een tweewegcommunicatieverbinding tussen twee programma's die op het netwerk worden uitgevoerd. EEN stopcontact is gebonden aan een poortnummer zodat de TCP-laag de applicatie kan identificeren waarnaar de gegevens bestemd zijn om te worden verzonden.



Een eindpunt is een combinatie van een IP-adres en een poortnummer. Het pakket in het Java-platform biedt een klasse,Stopcontactdat implementeert een kant van een tweerichtingsverbinding tussen uw Java-programma en een ander programma op het netwerk. De klasse bevindt zich bovenop een platformafhankelijke implementatie en verbergt de details van een bepaald systeem voor uw Java-programma. Door de klasse te gebruiken in plaats van te vertrouwen op native code, uw kan platformonafhankelijk communiceren via het netwerk.

Nu u weet wat Socket in Java is, gaan we verder en begrijpen hoe de client met de server communiceert en hoe de server hierop reageert.

Programmering aan de clientzijde

In het geval van client-side programmeren, wacht de client eerst tot de server start. Zodra de server actief is, worden de verzoeken naar de server verzonden. Daarna wacht de client op het antwoord van de server. Dit is dus de hele logica van client- en servercommunicatie. Laten we nu de programmering aan de clientzijde en de serverzijde in detail bekijken.

Om een ​​verzoek van een klant te starten, moet u de onderstaande stappen volgen:

1. Breng een verbinding tot stand

De allereerste stap is om een ​​stopcontactverbinding tot stand te brengen. Een socketverbinding houdt in dat de twee machines informatie hebben over elkaars netwerklocatie (IP-adres) en TCP-poort.

U kunt een Socket maken met behulp van een onderstaande verklaring:

Socket socket = nieuwe socket ('127.0.0.1', 5000)

  • Hier vertegenwoordigt het eerste argument de IP-adres van server .

  • Het tweede argument vertegenwoordigt de TCP-poort . (Het is een getal dat aangeeft welke applicatie op een server moet draaien.)

2. Communicatie

Om te communiceren via een socketverbinding, worden streams gebruikt voor zowel invoer als uitvoer van de gegevens. Nadat u een verbinding tot stand heeft gebracht en de verzoeken heeft verzonden, moet u de verbinding verbreken.

3. De verbinding verbreken

De socketverbinding wordt expliciet verbroken zodra het bericht naar de server is verzonden.

Laten we nu eens kijken hoe we een Java-programma kunnen schrijven om een ​​socketverbinding aan de clientzijde te implementeren.

// Een Java-programma voor een ClientSide import java.net. * Import java.io. * public class ClientProgram {// initialiseer socket en input output streams private Socket socket = null private DataInputStream input = null private DataOutputStream out = null // constructor om ip-adres en poort openbaar te maken Client (String-adres, int-poort) {// breng een verbinding tot stand, probeer {socket = nieuwe Socket (adres, poort) System.out.println ('Connected') // neemt input van terminal input = new DataInputStream (System.in) // stuurt uitvoer naar de socket out = new DataOutputStream (socket.getOutputStream ())} catch (UnknownHostException u) {System.out.println (u)} catch (IOException i) {System.out .println (i)} // string om bericht van invoer te lezen String line = '' // blijf lezen totdat 'Over' wordt ingevoerd terwijl (! line.equals ('Over')) {probeer {line = input.readLine ( ) out.writeUTF (line)} catch (IOException i) {System.out.println (i)}} // sluit de verbinding probeer {input.close () out.close () socket.close ()} catch (IOException ik ) {System.out.println (i)}} public static void main (String args []) {Client client = nieuwe client ('127.0.0.1', 5000)}}

Laten we nu programmeren aan de serverzijde implementeren en dan tot de uitvoer komen.

Programmering aan de serverzijde

In feite zal de server zijn object instantiëren en wachten op het verzoek van de client. Zodra de client het verzoek heeft verzonden, zal de server terug communiceren met het antwoord.

Om de servertoepassing te coderen, hebt u twee sockets nodig en deze zijn als volgt:

  • NAAR ServerSocket die wacht op de clientverzoeken (wanneer een client een nieuwe Socket () maakt)

  • Een gewoon oud stopcontact voor communicatie met de klant.

Hierna moet u met de reactie communiceren met de klant.

Communicatie

getOutputStream () methode wordt gebruikt om de output door de socket te sturen.

Sluit de verbinding

Het is belangrijk om de verbinding te sluiten door de socket te sluiten, evenals de invoer- / uitvoerstromen zodra alles klaar is.

Laten we nu eens kijken hoe we een Java-programma kunnen schrijven om een ​​socketverbinding aan de serverzijde te implementeren.

// Een Java-programma voor een Serverside import java.net. * Import java.io. * public class ServerSide {// initialiseer socket en invoerstroom private Socket socket = null private ServerSocket server = null private DataInputStream in = null // constructor met port public Server (int port) {// start server en wacht op verbinding probeer {server = new ServerSocket (port) System.out.println ('Server gestart') System.out.println ('Waiting for a client .. . ') socket = server.accept () System.out.println (' Client geaccepteerd ') // neemt input van de client-socket in = new DataInputStream (nieuwe BufferedInputStream (socket.getInputStream ())) String line =' '/ / leest bericht van client totdat 'Over' wordt verzonden terwijl (! line.equals ('Over')) {probeer {line = in.readUTF () System.out.println (line)} catch (IOException i) {System. out.println (i)}} System.out.println ('Verbinding sluiten') // sluit verbinding socket.close () in.close ()} catch (IOException i) {System.out.println (i)}} public static void main (String args []) { Server server = nieuwe server (5000)}}

Na het configureren van zowel client- als server-end, kunt u eerst het server-side programma uitvoeren. Daarna moet u het programma aan de clientzijde uitvoeren en het verzoek verzenden. Zodra het verzoek vanaf de client is verzonden, reageert de server terug. Onderstaande momentopname vertegenwoordigt hetzelfde.

1. Wanneer u het server-side script uitvoert, zal het starten en wachten tot de client aan de slag is.

2. Vervolgens wordt de client verbonden en voert hij het verzoek in de vorm van een string in.

3. Wanneer de client het verzoek verzendt, reageert de server terug.

bedrijven die de programmeertaal r gebruiken

Dat is hoe je een socketprogramma in Java moet uitvoeren. U kunt deze programma's ook uitvoeren op een terminalvenster of een opdrachtprompt. Maar aangezien Eclipse ver gevorderd is met zijn functies, kunt u beide programma's eenvoudig op een console uitvoeren.

Dit brengt ons bij het einde van het artikel over socketprogrammering in Java. Ik hoop dat ik wat licht op uw kennis heb geworpen Socket programmeren.

Bekijk de door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. We zijn hier om je te helpen bij elke stap op je reis, om naast deze Java-interviewvragen ook een curriculum te bedenken dat is ontworpen voor studenten en professionals die een Java-ontwikkelaar willen worden.

Heeft u een vraag voor ons? Vermeld het in de commentarensectie van dit 'Socket Programmeren in Java' -artikel en we nemen zo snel mogelijk contact met u op.