Μάθετε τα πάντα για τον προγραμματισμό Socket στην Java



Ο προγραμματισμός Java Socket χρησιμοποιείται για επικοινωνία μεταξύ των εφαρμογών που εκτελούνται σε διαφορετικό JRE. Ο προγραμματισμός Java Socket μπορεί να είναι προσανατολισμένος στη σύνδεση ή χωρίς σύνδεση.

Προγραμματισμός υποδοχής σε χρησιμοποιείται για επικοινωνία μεταξύ των εφαρμογών που εκτελούνται σε διαφορετικά . Μπορεί να είναι προσανατολισμένη στη σύνδεση ή χωρίς σύνδεση. Συνολικά, η υποδοχή είναι ένας τρόπος για τη δημιουργία σύνδεσης μεταξύ ενός πελάτη και ενός διακομιστή. Σε αυτό το άρθρο, θα σας πω όλα σχετικά με τον προγραμματισμό Socket.

Τα παρακάτω θέματα καλύπτονται σε αυτό το άρθρο:





Τι είναι ο προγραμματισμός Socket στην Java;

Προγραμματισμός υποδοχών είναι ένας τρόπος σύνδεσης δύο κόμβων σε ένα δίκτυο για επικοινωνία μεταξύ τους. Ενας πρίζα (κόμβος) ακούει μια συγκεκριμένη θύρα σε μια IP, ενώ άλλη πρίζα φτάνει στο άλλο για να δημιουργήσει μια σύνδεση.

Client Server Communication - Socket Programming σε Java - Edureka



Ο διακομιστής σχηματίζει τον ακροατή πρίζα ενώ ο πελάτης φτάνει στον διακομιστή. Socket και Server Socket χρησιμοποιούνται για προγραμματισμό πρίζας προσανατολισμένης στη σύνδεση.

Τώρα ας κατανοήσουμε τη βασική ιδέα του Socket Programming, δηλαδή μια υποδοχή.

Τι είναι το Socket στην Java;

ΠΡΟΣ ΤΟ πρίζα σε είναι ένα τελικό σημείο μιας αμφίδρομης σύνδεσης επικοινωνίας μεταξύ δύο προγραμμάτων που εκτελούνται στο δίκτυο. ΕΝΑ πρίζα δεσμεύεται σε έναν αριθμό θύρας έτσι ώστε το επίπεδο TCP να μπορεί να προσδιορίσει την εφαρμογή στην οποία προορίζονται να σταλούν τα δεδομένα.



Ένα τελικό σημείο είναι ένας συνδυασμός μιας διεύθυνσης IP και ενός αριθμού θύρας. Το πακέτο στην πλατφόρμα Java παρέχει μια τάξη,Πρίζαπου υλοποιεί τη μία πλευρά μιας αμφίδρομης σύνδεσης μεταξύ του προγράμματος Java και ενός άλλου προγράμματος στο δίκτυο. Η τάξη βρίσκεται στην κορυφή μιας εφαρμογής που εξαρτάται από την πλατφόρμα, αποκρύπτοντας τις λεπτομέρειες οποιουδήποτε συγκεκριμένου συστήματος από το πρόγραμμα Java. Χρησιμοποιώντας την τάξη αντί να βασίζεστε σε εγγενή κώδικα, το δικό σας μπορεί να επικοινωνεί μέσω του δικτύου με τρόπο ανεξάρτητο από την πλατφόρμα.

Τώρα που ξέρετε, τι είναι το Socket στην Java, ας προχωρήσουμε περαιτέρω και να κατανοήσουμε πώς επικοινωνεί ο πελάτης με τον διακομιστή και πώς ο διακομιστής ανταποκρίνεται.

Προγραμματισμός πλευράς πελάτη

Στην περίπτωση προγραμματισμού από την πλευρά του πελάτη, ο πελάτης θα περιμένει πρώτα να ξεκινήσει ο διακομιστής. Μόλις ο διακομιστής τεθεί σε λειτουργία, θα στείλει τα αιτήματα στον διακομιστή. Μετά από αυτό, ο πελάτης θα περιμένει την απάντηση από το διακομιστή. Έτσι, αυτή είναι η όλη λογική της επικοινωνίας πελάτη και διακομιστή. Τώρα ας κατανοήσουμε λεπτομερώς τον προγραμματισμό από πλευράς πελάτη και διακομιστή.

Για να ξεκινήσετε ένα αίτημα πελατών, πρέπει να ακολουθήσετε τα παρακάτω βήματα:

1. Δημιουργήστε μια σύνδεση

Το πρώτο βήμα είναι να δημιουργήσετε μια σύνδεση πρίζας. Η σύνδεση με την υποδοχή υποδηλώνει ότι τα δύο μηχανήματα έχουν πληροφορίες για τη θέση δικτύου του άλλου (Διεύθυνση IP) και τη θύρα TCP.

java διαφορά μεταξύ hashmap και hashtable

Μπορείτε να δημιουργήσετε ένα Socket με τη βοήθεια μιας παρακάτω δήλωσης:

Υποδοχή υποδοχής = νέα υποδοχή ('127.0.0.1', 5000)

  • Εδώ, το πρώτο επιχείρημα αντιπροσωπεύει το Διεύθυνση IP του διακομιστή .

  • Το δεύτερο επιχείρημα αντιπροσωπεύει το Θύρα TCP . (Είναι ένας αριθμός που αντιπροσωπεύει ποια εφαρμογή πρέπει να εκτελείται σε διακομιστή.)

2. Επικοινωνία

Για την επικοινωνία μέσω σύνδεσης υποδοχής, χρησιμοποιούνται ροές τόσο για την είσοδο όσο και για την έξοδο των δεδομένων. Αφού δημιουργήσετε μια σύνδεση και αποστείλετε τα αιτήματα, πρέπει να κλείσετε τη σύνδεση.

3. Κλείσιμο της σύνδεσης

Η σύνδεση της υποδοχής κλείνει ρητά μόλις σταλεί το μήνυμα στον διακομιστή.

Τώρα ας δούμε πώς να γράψετε ένα πρόγραμμα Java για να εφαρμόσετε σύνδεση socket από την πλευρά του πελάτη.

// Ένα πρόγραμμα Java για ένα ClientSide import java.net. * Import java.io. * public class ClientProgram {// προετοιμασία ροής εξόδου υποδοχής και εισόδου private Socket socket = null private DataInputStream input = null private DataOutputStream out = null // buildor για να τοποθετήσετε τη διεύθυνση IP και τη δημόσια θύρα Πελάτης (Διεύθυνση συμβολοσειράς, θύρα int) {// δημιουργία σύνδεσης δοκιμάστε {socket = new Socket (διεύθυνση, port) System.out.println ('Connected') // παίρνει είσοδο από τερματικό input = new DataInputStream (System.in) // στέλνει έξοδο στην έξοδο = new DataOutputStream (socket.getOutputStream ())} catch (UnknownHostException u) {System.out.println (u)} catch (IOException i) {System.out .println (i)} // συμβολοσειρά για ανάγνωση μηνύματος από την είσοδο String line = '' // συνεχίστε να διαβάζετε έως ότου εισαχθεί το 'Over' ενώ (! line.equals ('Over')) {try {line = input.readLine ( out.writeUTF (line)} catch (IOException i) {System.out.println (i)}} // κλείστε τη σύνδεση δοκιμάστε {input.close () out.close () socket.close ()} catch (IOException Εγώ ) {System.out.println (i)}} δημόσιος στατικός κενός κενός (String args []) {Client client = new Client ('127.0.0.1', 5000)}}

Τώρα, ας εφαρμόσουμε τον προγραμματισμό από τον διακομιστή και έπειτα φτάνουμε στην έξοδο.

Προγραμματισμός από πλευράς διακομιστή

Βασικά, ο διακομιστής θα δημιουργήσει το αντικείμενο του και θα περιμένει το αίτημα του πελάτη. Μόλις ο πελάτης στείλει το αίτημα, ο διακομιστής θα επικοινωνήσει ξανά με την απάντηση.

Για να κωδικοποιήσετε την εφαρμογή από την πλευρά του διακομιστή, χρειάζεστε δύο υποδοχές και έχουν ως εξής:

  • ΠΡΟΣ ΤΟ Υποδοχή διακομιστή που περιμένει τα αιτήματα του πελάτη (όταν ένας πελάτης κάνει μια νέα Socket ())

  • Ένα απλό παλιό πρίζα για επικοινωνία με τον πελάτη.

Μετά από αυτό, πρέπει να επικοινωνήσετε με τον πελάτη με την απάντηση.

Επικοινωνία

getOutputStream () χρησιμοποιείται μέθοδος για την αποστολή της εξόδου μέσω της υποδοχής.

Κλείστε τη σύνδεση

Είναι σημαντικό να κλείσετε τη σύνδεση κλείνοντας την υποδοχή, καθώς και τις ροές εισόδου / εξόδου μόλις γίνουν όλα.

Τώρα ας δούμε πώς να γράψετε ένα πρόγραμμα Java για να εφαρμόσετε σύνδεση socket από την πλευρά του διακομιστή.

// Ένα πρόγραμμα Java για ένα διακομιστή εισαγωγής java.net. * Εισαγωγή java.io. * δημόσια κλάση ServerSide {// αρχικοποίηση υποδοχής και εισόδου ροής ιδιωτικής υποδοχής υποδοχής = μηδενικός ιδιωτικός διακομιστής διακομιστή υποδοχής = μηδενικός ιδιωτικός DataInputStream σε = null // κατασκευαστής με port public Server (int port) {// ξεκινά τον διακομιστή και περιμένει μια σύνδεση δοκιμάστε {server = new ServerSocket (port) System.out.println ('Server start') System.out.println ('Αναμονή πελάτη .. . ') socket = server.accept () System.out.println (' Client accept ') // λαμβάνει είσοδο από την υποδοχή πελάτη σε = new DataInputStream (new BufferedInputStream (socket.getInputStream ())) String line = '/ / διαβάζει μήνυμα από τον πελάτη έως ότου σταλεί το 'Over' ενώ (! line.equals ('Over')) {try {line = in.readUTF () System.out.println (line)} catch (IOException i) {Σύστημα. out.println (i)}} System.out.println («Κλείσιμο σύνδεσης») // κλείσιμο σύνδεσης socket.close () in.close ()} catch (IOException i) {System.out.println (i)}} δημόσιος στατικός κενός κενός (String args []) { Διακομιστής διακομιστή = νέος διακομιστής (5000)}}

Αφού διαμορφώσετε το τέλος πελάτη και διακομιστή, μπορείτε πρώτα να εκτελέσετε το πρόγραμμα από την πλευρά του διακομιστή. Μετά από αυτό, πρέπει να εκτελέσετε το πρόγραμμα πλευρά του πελάτη και να στείλετε το αίτημα. Μόλις αποσταλεί το αίτημα από το τέλος του πελάτη, ο διακομιστής θα απαντήσει πίσω. Το παρακάτω στιγμιότυπο αντιπροσωπεύει το ίδιο.

1. Όταν εκτελείτε το σενάριο του διακομιστή, θα ξεκινήσει και θα περιμένει να ξεκινήσει ο πελάτης.

2. Στη συνέχεια, ο πελάτης θα συνδεθεί και εισάγει το αίτημα με τη μορφή συμβολοσειράς.

3. Όταν ο πελάτης στέλνει το αίτημα, ο διακομιστής θα απαντήσει.

Έτσι πρέπει να εκτελέσετε ένα πρόγραμμα socket στην Java. Μπορείτε επίσης να εκτελέσετε αυτά τα προγράμματα σε ένα παράθυρο τερματικού ή σε μια γραμμή εντολών. Όμως, καθώς το Eclipse είναι πολύ προηγμένο με τις δυνατότητές του, μπορείτε απλά να εκτελέσετε και τα δύο προγράμματα σε μια κονσόλα.

Αυτό μας φέρνει στο τέλος του άρθρου σχετικά με τον προγραμματισμό Socket στην Java. Ελπίζω να ρίξω λίγο φως στις γνώσεις σας Προγραμματισμός Socket.

Δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Είμαστε εδώ για να σας βοηθήσουμε σε κάθε βήμα του ταξιδιού σας, για να γίνετε εκτός από αυτές τις ερωτήσεις της συνέντευξης java, έχουμε ένα πρόγραμμα σπουδών που έχει σχεδιαστεί για φοιτητές και επαγγελματίες που θέλουν να γίνουν προγραμματιστές Java.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του άρθρου 'Προγραμματισμός Socket σε Java' και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.