Αυτό το άρθρο παρέχει δύο παραδείγματα του τρόπου χρήσης του στοιχείου ελέγχου Winsock ActiveX εγκατασταθεί με το Microsoft Office 2000 Developer Edition Tools.
Το στοιχείο ελέγχου Winsock σάς επιτρέπει να συνδέσετε ένα απομακρυσμένο υπολογιστή και την ανταλλαγή δεδομένων μεταξύ υπολογιστών και υπολογιστή-πελάτη και διακομιστή. Το στοιχείο ελέγχου Winsock υποστηρίζει δύο πρωτόκολλα: Transmission Control Protocol (TCP) και User Datagram Protocol (UDP).
TCP είναι ένα πρωτόκολλο που βασίζεται σε σύνδεση. Μια συνηθισμένη analogy χρησιμοποιείται για να περιγράψει TCP είναι το τηλέφωνο. Σε αυτό το analogy καλούντες πρέπει να δημιουργήσει μια σύνδεση και στα δύο άκρα της τηλεφωνικής γραμμής, πριν αυτά να ανταλλάσσουν πληροφορίες. Ένας υπολογιστής που χρησιμοποιεί το πρωτόκολλο TCP πρέπει να λάβετε επιβεβαίωση από τον υπολογιστή-παραλήπτη που έχει μια σύνδεση δημιουργήθηκε πριν από δύο υπολογιστές μπορεί να μεταφέρει δεδομένα.
UDP είναι ένα πρωτόκολλο χωρίς σύνδεση. Μια συνηθισμένη analogy χρησιμοποιείται για να περιγράψει UDP είναι ότι από ένα ραδιόφωνο. Σε αυτό το analogy ένα ραδιοφωνικό σταθμό εκπέμπει το σήμα χωρίς να γνωρίζετε ότι για το αν κάποιος κάνει ακρόαση. Ένας υπολογιστής που χρησιμοποιεί UDP στέλνει δεδομένα και δεν απαιτεί μια σύνδεση με τον υπολογιστή στο άκρο λήψης της μετάδοσης.
Παράδειγμα 1 - η χρήση του στοιχείου ελέγχου ActiveX Winsock TCP
Αυτό το παράδειγμα χρησιμοποιεί τον ίδιο υπολογιστή για να στείλετε και να λάβετε δεδομένα. Μπορείτε να δημιουργήσετε μια φόρμα με τρία στοιχεία ελέγχου Winsock. Ένα από τα στοιχεία ελέγχου εξομοιώνει το περιβάλλον του υπολογιστή πελάτη για να στείλετε μια αίτηση σύνδεσης σε ένα διακομιστή. Τα άλλα δύο στοιχεία ελέγχου να εξομοιώσει το περιβάλλον σε έναν υπολογιστή διακομιστή: ένα στοιχείο ελέγχου να αναμένει μια αίτηση σύνδεσης και ο άλλος αποδέχεται την αίτηση, όταν βγαίνει.
- Δημιουργήστε μια νέα κενή βάση δεδομένων που ονομάζεται WinsockDemo.mdb.
- Δημιουργήστε την ακόλουθη νέα φόρμα (που δεν βασίζεται σε πίνακα ή ερώτημα) σε προβολή σχεδίασης:
Form: TCPForm
---------------------------------
Caption: TCP Form
Command button:
Name: cmdListen
Caption: Listen
Command button:
Name: cmdConnect
Caption: Establish Connection
Command button:
Name: cmdSend
Caption: Send Data
Command button:
Name: cmdRespond
Caption: Respond
Command button:
Name: cmdClose
Caption: Close Connection
Text box:
Name: Text1
Label Caption: Data Received:
Winsock control:
Name: axWinsockListen
Winsock control:
Name: axWinsockClient
Winsock control:
Name: axWinsockServer
- Στο διακομιστήViewμενού, κάντε κλικ στο κουμπίΚωδικός.
- Πληκτρολογήστε την ακόλουθη γραμμή στην ενότητα δήλωση της λειτουργικής μονάδας κλάσης της φόρμας:
Dim wsListen, wsClient, wsServer As Winsock
- Πληκτρολογήστε τις ακόλουθες διαδικασίες.
Για τον καλύτερο δυνατό τρόπο απεικονίζουν τον τρόπο λειτουργίας του στοιχείου ελέγχου Winsock μεταξύ πελάτη και διακομιστή, οι διαδικασίες παρατίθενται με τη σειρά που παρουσιάζονται.
Private Sub Form_Load()
' Set one server Winsock control and the client Winsock control
' when the form loads.
Set wsListen = Me!axWinsockListen.Object
Set wsClient = Me!axWinsockClient.Object
' Set the protocol for each control.
wsListen.Protocol = sckTCPProtocol
wsClient.Protocol = sckTCPProtocol
' Set the remote host on the client Winsock control. Because
' client and server are the same computer in this example, set
' RemoteHost equal to LocalIP.
wsClient.RemoteHost = wsListen.LocalIP
' Set a local and a remote port for the client.
wsClient.RemotePort = 100
wsClient.LocalPort = 99
' Set a local and a remote port for the server. Note that the
' server RemotePort is the client LocalPort and vice versa.
wsListen.LocalPort = 100
wsListen.RemotePort = 99
End Sub
Private Sub cmdListen_Click()
' Start the server listening for a connection request.
wsListen.Listen
Msgbox "Server is waiting for a connection request."
End Sub
Private Sub cmdConnect_Click()
' The client requests a connection with the server.
Msgbox "Client requested connection with server."
wsClient.Connect
End Sub
Private Sub axWinsockListen_ConnectionRequest(ByVal requestID As _
Long)
' When the server receives a connection request, set the second
' Winsock on the server to accept the request.
Set wsServer = Me!axWinsockServer.Object
wsServer.Protocol = sckTCPProtocol
' Accept the connection request.
wsServer.Accept requestID
Msgbox "Server accepted client connection request."
End Sub
Private Sub axWinsockClient_Connect()
' When the server accepts the connection request, the Connect
' event fires on the client. Display a message indicating success.
MsgBox "Connection Successful!"
End Sub
Private Sub cmdSend_Click()
' After a connection is established, use a command button to send
' data from client to server.
wsClient.SendData "Hello"
End Sub
Private Sub axWinsockServer_DataArrival(ByVal bytesTotal As Long)
Dim strClientMsg As String
' The DataArrival event fires on the server when the client sends
' information. Get the data and display it in a text box.
wsServer.GetData strClientMsg, vbString
Me!Text1.Value = strClientMsg
End Sub
Private Sub cmdRespond_Click()
' Send a message from the server to the client.
wsServer.SendData "Thanks for the message!"
End Sub
Private Sub axWinsockClient_DataArrival(ByVal bytesTotal As Long)
Dim strServerMsg As String
' The DataArrival event fires on the client when the server sends
' information. Get the data and display it in a text box.
wsClient.GetData strServerMsg
Me!Text1.Value = strServerMsg
End Sub
Private Sub cmdClose_Click()
' Close the server connections
wsServer.Close
wsListen.Close
Msgbox "Server connections closed."
End Sub
Private Sub axWinsockClient_Close()
' Close event on client fires after server closes connection.
' Close the client connection and display a message box.
wsClient.Close
MsgBox "Client connections closed. Good-Bye!"
End Sub
- Αποθηκεύστε και κλείστε το TCPForm.
- Ανοίξτε το TCPForm σε προβολή φόρμας και να εκτελέσετε τις παρακάτω εργασίες:
- Κάντε κλικ στην καρτέλαΑκρόασηΓια να ξεκινήσετε το διακομιστή σε ακρόαση για μια αίτηση σύνδεσης.
Σημειώστε το πλαίσιο μηνύματος που εμφανίζεται για να υποδείξετε ότι ο διακομιστής είναι σε αναμονή για σύνδεση. - Κάντε κλικ στην καρτέλαΔημιουργία σύνδεσηςτο κουμπί.
Σημειώστε το πλαίσιο μηνύματος από το πρόγραμμα-πελάτης επαληθεύει ότι η σύνδεση πραγματοποιήθηκε με επιτυχία και το πλαίσιο μηνύματος από το διακομιστή επιβεβαιώνει ότι η αίτηση έγινε αποδεκτή. - Κάντε κλικ στην καρτέλαΑποστολή δεδομένωνκουμπί και παρατηρήστε ότι εμφανίζεται το μήνυμα προγράμματος-πελάτη "Hello" στο πλαίσιο κειμένου της φόρμας.
- Κάντε κλικ στην καρτέλαΑπόκρισηκουμπί και Σημειώστε ότι εμφανίζεται το μήνυμα διακομιστή "Ευχαριστούμε για το μήνυμα!" στο πλαίσιο κειμένου.
- Κάντε κλικ στην καρτέλαΚλείσιμο σύνδεσηςκουμπί και σημειώστε το μήνυμα πλαίσια από υπολογιστή-πελάτη και διακομιστή, που υποδηλώνει ότι έχουν κλείσει τις συνδέσεις.
Παράδειγμα 2 - η χρήση του στοιχείου ελέγχου ActiveX Winsock UDP
Αυτό το παράδειγμα χρησιμοποιεί τον ίδιο υπολογιστή για να στείλετε και να λάβετε δεδομένα. Μπορείτε να δημιουργήσετε μια φόρμα με δύο στοιχεία ελέγχου Winsock: ένα από τα στοιχεία ελέγχου εξομοιώνει τον υπολογιστή-πελάτη και το άλλο στοιχείο ελέγχου εξομοιώνει το διακομιστή.
- Δημιουργήστε μια νέα κενή βάση δεδομένων που ονομάζεται WinsockDemo.mdb, ή να χρησιμοποιήσετε τη βάση δεδομένων που δημιουργήσατε στην προηγούμενη παράδειγμα.
- Δημιουργήστε την ακόλουθη νέα φόρμα (που δεν βασίζεται σε πίνακα ή ερώτημα) σε προβολή σχεδίασης:
Form: UDPForm
--------------------------------
Caption: UDP Form
Command button:
Name: cmdSend
Caption: Send Data
Text box:
Name: Text1
Label Caption: Data Received:
Winsock control:
Name: axWinsockClient
Winsock control:
Name: axWinsockServer
- Στο διακομιστήViewμενού, κάντε κλικ στο κουμπίΚωδικός.
- Πληκτρολογήστε την ακόλουθη γραμμή στην ενότητα δήλωση της λειτουργικής μονάδας κλάσης της φόρμας:
Dim wsClient, wsServer As Winsock
- Πληκτρολογήστε τις ακόλουθες διαδικασίες.
Για τον καλύτερο δυνατό τρόπο απεικονίζουν τον τρόπο λειτουργίας του στοιχείου ελέγχου Winsock μεταξύ πελάτη και διακομιστή, οι διαδικασίες παρατίθενται με τη σειρά που παρουσιάζονται.
Private Sub Form_Load()
' Set the control objects when the form loads.
Set wsClient = Me!axWinsockClient.Object
Set wsServer = Me!axWinsockServer.Object
' Set the protocol for client and server.
wsClient.Protocol = sckUDPProtocol
wsServer.Protocol = sckUDPProtocol
' Set the host and ports for client and server. Because client
' and server are the same computer in this example, set RemoteHost
' equal to LocalIP.
wsServer.RemoteHost = wsClient.LocalIP
wsServer.RemotePort = 1007
wsClient.Bind 1007
End Sub
Private Sub CmdSend_Click()
' Send a broadcast message from the server.
wsServer.SendData "Hello"
End Sub
Private Sub axWinsockClient_DataArrival(ByVal bytesTotal As Long)
Dim strServerMsg As String
' When a message arrives from the server, display it in a text
' box.
wsClient.GetData strServerMsg, vbString
Me!Text1.Value = strServerMsg
End Sub
- Αποθηκεύστε και κλείστε τη φόρμα UDPForm.
- Άνοιγμα UDPForm σε προβολή φόρμας και κάντε κλικ στοΑποστολή δεδομένωντο κουμπί.
Σημειώστε ότι το πλαίσιο κειμένου εμφανίζει "Hello". Επειδή αυτή είναι μια μετάδοση χωρίς σύνδεση, δεν χρειάζεται να πραγματοποιήσετε μια σύνδεση υπολογιστή-πελάτη-διακομιστή.
Αναγν. άρθρου: 209905 - Τελευταία αναθεώρηση: Δευτέρα, 27 Σεπτεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
- Microsoft Access 2000 Standard Edition
| kbhowto kbinfo kbusage kbmt KB209905 KbMtel |
Μηχανικά μεταφρασμένοΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:
209905
(http://support.microsoft.com/kb/209905/en-us/
)