Πώς να κάνετε ανταλλαγή δεδομένων μέσω δικτύου που χρησιμοποιεί Delphi

Από όλα τα συστατικά που Δελφοί παρέχει υποστήριξη για εφαρμογές που ανταλλάσσουν δεδομένα μέσω ενός δικτύου (διαδίκτυο, intranet και τοπικά), δύο από τα πιο συνηθισμένα TServerSocket και TClientSocket, τα οποία είναι σχεδιασμένα να υποστηρίζουν λειτουργίες ανάγνωσης και εγγραφής μέσω μιας σύνδεσης TCP / IP.

Winsock και Delphi Socket Components

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

Τα στοιχεία υποδοχής Delphi (περιτυλίγματα για το Winsock) εξομαλύνουν τη δημιουργία εφαρμογών που επικοινωνούν με άλλα συστήματα χρησιμοποιώντας TCP / IP και συναφή πρωτόκολλα. Με τις υποδοχές, μπορείτε να διαβάσετε και να γράψετε τις συνδέσεις σε άλλες μηχανές χωρίς να ανησυχείτε για τις λεπτομέρειες του υποκείμενου λογισμικού δικτύωσης.

instagram viewer

Η παλέτα διαδικτύου στη γραμμή εργαλείων των συστατικών στοιχείων του Delphi φιλοξενεί το TServerSocket και TClientSocket εξαρτήματα καθώς και TcpClient, TcpServer, και TUdpSocket.

Για να ξεκινήσετε μια σύνδεση υποδοχής χρησιμοποιώντας ένα στοιχείο υποδοχής, πρέπει να καθορίσετε έναν κεντρικό υπολογιστή και μια θύρα. Γενικά, πλήθος καθορίζει ένα ψευδώνυμο για τη διεύθυνση IP του συστήματος διακομιστή. Λιμάνι καθορίζει τον αριθμό αναγνωριστικού που προσδιορίζει τη σύνδεση υποδοχής διακομιστή.

Ένα απλό μονόδρομο πρόγραμμα για την αποστολή κειμένου

Για να δημιουργήσετε ένα απλό παράδειγμα χρησιμοποιώντας τα στοιχεία υποδοχής που παρέχονται από τους Delphi, δημιουργήστε δύο μορφές - μία για τον διακομιστή και μία για τον υπολογιστή-πελάτη. Η ιδέα είναι να δοθεί η δυνατότητα στους πελάτες να στείλουν ορισμένα δεδομένα κειμένου στον διακομιστή.

Για να ξεκινήσετε, ανοίξτε δύο φορές τους Δελφούς, δημιουργώντας ένα έργο για την εφαρμογή διακομιστή και ένα για τον πελάτη.

Πλευρά του διακομιστή:

Σε μια φόρμα, εισάγετε ένα στοιχείο TServerSocket και ένα στοιχείο TMemo. Στο OnCreate συμβάν για τη φόρμα, προσθέστε τον επόμενο κώδικα:

διαδικασία TForm1.FormCreate (αποστολέας: TObject);
ξεκινήσει
ServerSocket1.Port: = 23;
ServerSocket1.Active: = Αληθινό.
τέλος;

ο OnClose το συμβάν θα πρέπει να περιλαμβάνει:

διαδικασία TForm1.FormClose
(Αποστολέας: TObject; var Δράση: TCloseAction);
ξεκινήσει
ServerSocket1.Active: = ψευδής;
τέλος;

Πελάτης πελάτη:

Για την εφαρμογή πελάτη, προσθέστε ένα στοιχείο TClientSocket, TEdit και TButton σε μια φόρμα. Καταχωρίστε τον ακόλουθο κώδικα για τον πελάτη:

διαδικασία TForm1.FormCreate (αποστολέας: TObject);
ξεκινήσει
ClientSocket1.Port: = 23;
// τοπική διεύθυνση TCP / IP του διακομιστή
ClientSocket1.Host: = '192.168.167.12';
ClientSocket1.Active: = true;
τέλος;
διαδικασία TForm1.FormClose (αποστολέας: TObject; var Δράση: TCloseAction);
ξεκινήσει
ClientSocket1.Active: = false;
τέλος;
διαδικασία TForm1.Button1Κλικ (αποστολέας: TObject);
αρχικά ClientSocket1.Active έπειτα
ClientSocket1.Socket. SendText (Edit1.Text);
τέλος;

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

Πίσω στο διακομιστή:

Το τελευταίο άγγιγμα σε αυτό το δείγμα είναι να παρέχει μια λειτουργία για το διακομιστή να "βλέπει" τα δεδομένα που ο πελάτης στέλνει. Το γεγονός που μας ενδιαφέρει είναι OnClientRead-συμβαίνει όταν η υποδοχή διακομιστή πρέπει να διαβάσει πληροφορίες από μια υποδοχή πελάτη.

διαδικασία TForm1.ServerSocket1ClientRead (αποστολέας: TObject;
Υποδοχή: TCustomWinSocket);
ξεκινήσει
Memo1.Lines. Προσθήκη (υποδοχή. ReceiveText);
τέλος;

Όταν περισσότεροι από ένας πελάτες στέλνουν δεδομένα στο διακομιστή, θα χρειαστεί λίγο περισσότερος κώδικας:

διαδικασία TForm1.ServerSocket1ClientRead (αποστολέας: TObject;
Υποδοχή: TCustomWinSocket);
var
i: ακέραιο;
sRec: σειρά;
beginfor i: = 0 προς το ServerSocket1.Socket. ActiveConnections-1 dobeginwith ServerSocket1.Socket. Συνδέσεις [i] dobegin
sRec: = ReceiveText.
αν sRecr '' τότε αρχίζει
Memo1.Lines. Προσθήκη (RemoteAddress + 'στέλνει:');
Memo1.Lines. Προσθέστε (sRecr);
τέλος;
τέλος;
τέλος;
τέλος;

Όταν ο διακομιστής διαβάζει πληροφορίες από μια υποδοχή προγράμματος-πελάτη, προσθέτει το κείμενο στο στοιχείο Memo. τόσο το κείμενο όσο και ο πελάτης RemoteAddress προστίθενται, έτσι θα ξέρετε ποιος πελάτης έστειλε τις πληροφορίες. Σε πιο εξελιγμένες εφαρμογές, τα ψευδώνυμα για γνωστές διευθύνσεις IP μπορούν να χρησιμεύσουν ως υποκατάστατα.

Για ένα πιο περίπλοκο έργο που χρησιμοποιεί αυτά τα στοιχεία, εξερευνήστε το Δελφοί> Δελτία> Internet> Συνομιλία έργο. Πρόκειται για μια απλή εφαρμογή δικτύου που χρησιμοποιεί μια φόρμα (έργο) τόσο για τον εξυπηρετητή όσο και για τον πελάτη.

instagram story viewer