Download eksempel |
|
Microsoft Winsock Control 6.0 I dag hvor netværk er begyndt at blive så stor en del af vores hverdag, er det vel også på tide at man begynder at lave nogle applikationer der udnytter disse muligheder. I Visual Basic får man stillet komponenten Winsock Control 6.0" til rådighed. Ved hjælp af den kan man opbygge applikationer der usynligt for brugeren kan kommunikere med andre maskiner på et netværk, som f.eks. Internettet
I dette eksempel vil jeg lave et simpelt program, hvor et password tastes ind i et client-program for derefter at blive checket på en server som indeholder de gyldige passwords. Hvis passwordet er gyldigt, sendes der et positivt svar tilbage ellers sendes der et negativt svar.
Når du har oprettet et nyt projekt ("Standard EXE"), skal vi have tilføjet Winsock kontrollen. Dette gøres
ved klik på:
I dette eksempel har jeg navngivet Winsock kontrollen, "Wsck" Jeg vil i resten af artiklen kun holde mig til det kode som har noget med datakommunikation at gøre. Jeg vil også kun gennemgå kode fra serveren, da clienten indeholder næsten samme kodestykker, bare i en anden rækkefølge. Server Applikationen Serveren skal som sagt lytte på sin forbindelse og høre om der kommer nogle requests. Men før den kan lytte, må vi fortælle programmet hvordan og hvor den skal lytte. Dette har jeg lagt i Form_Load området.
Wsck.Protocol = sckUDPProtocol MsgBox (Wsck.LocalIP) Wsck.LocalPort = "2777" Wsck.BindFørst fortæller vi winsock at den skal benytte UDP, som er en connection-less protokol. Man kunne også vælge TCP, som er en connection-oriented protokol, men for nemhedens skyld benytter vi UDP. Derefter får vi programmet til at vise vores IP-adresse i en msgbox. Hvis man ikke er koblet op på et netværk, vil man få adressen 127.0.0.1. ("Default adresse"). Linje 3 fortæller winsock at den skal benytte port 2777. Dette portnummer har jeg valgt helt tilfældigt og det kunne i princippet være et hvilken som helst tal mellem 1024 og 65535. Husk hvis du har en firewall installeret at der skal være åbnet for porten. Den sidste kommando fortæller winsock, at den skal begynde at lytte på sin port for indgående beskeder. Nu hvor vi har fået serveren til at lytte på sin port, skal vi jo også fortælle programmet hvad det skal gøre hvis der pludselig kommer en besked. Winsock stiller en metode til rådighed som vi benytter i vores eksempel. Metoden er en Sub-procedure, som winsock automatisk kalder når der dukker indgående beskeder op. Private Sub Wsck_DataArrival(ByVal bytesTotal As Long) Wsck.GetData TestData, vbString Msgbox TestData End Sub
Alt det kode som man placere i denne sub, vil blive udført hver gang data modtages på porten.
Her benytter vi funktionen ‘GetData’, til at lægge de indgående data over i variablen ‘TestData’ som
vi fortæller er af type ‘String’. Tilsidst viser vi de nye data i en MsgBox. IP = Wsck.RemoteHost Port = Wsck.RemotePortHvor IP og Port er to variabler defineret af os. Den sidste funktion som serveren bruger er ‘SendData’. Hvis vi vil sende et svar til en af de clienter som har request’et os, skal vi selvfølgelig bruge dennes IP og portnummer. Heldigvis har vi lige gemt dem i to variabler. Følgende kode viser hvordan man sender et response til en client. Wsck.RemoteHost = IP Wsck.RemotePort = Port Wsck.SendData "Password er OK"Her sætter vi først IP-adressen og derefter portnumret på clienten. Tilsidst sender vi stringen "Password er OK" afsted over netværket.
Ved hjælp af disse få kommandoer og metoder kan man bygge et distribueret system op. Altså et system
der usynligt for brugeren kommunikere med flere computere.
Jeg håber at denne artikel har givet dig blod på tanden, til at lave nogle client-server programmer.
Status: Version 1.0 |
| Eksempel lavet af: Anders Hansen. |