Controlul WINSOCK
In cele ce urmeaza este prezentat controlul winsock ca si control folosit in cadrul mediului de programare VisualBasic, mediu utilizat si pentru crearea aplicatiei practice. Acesta are asemanari foarte mari cu controale existente in alte medii de dezvoltare vizuala, unele dintre acestea fiind chiar identice.
Controlul Winsock, invizibil la utilizator, furnizeaza usor conexiuni intre doua hosturi folosind doua tipuri de protocoale TCP si UDP.
Controlul
Winsock se foloseste numai in retele bazate pe
Protocolul TCP/IP este un protocol universal compatibil pe computere de la diferiti fabricanti, cu diferite sisteme de operare, permitand acestora comunicarea sigura. Acesta depaseste estimarile initiale ca utilizare mondiala, fiind protocolul pe care se bazeaza comunicarea in reteaua Internet.
Protocolul
in sine este privit ca un Open System
pentru ca au fost publicate liber toate implementarile sale el cuprinde o
Ca orice protocol de retea acesta este format din layere:
aplicatie: telnet, ftp, email
transport: TCP, UDP
retea: IP, ICMP, IGMP
link: nivel fizic card retea
Responsabilitatile acestor layere sunt dupa cum urmeaza:
Link layer - este numit si layer de date sau layer de retea, si in mod normal include device driverul corespunzator cardului de retea din SO respectiv;
Network Layer - numit si Internet layer are ca rol controlul miscarii pachetelor in retea. Un exemplu este rutarea. IP, ICMP(Internet Control Message Protocol) si IGMP(Internet Group Management protocol) asigura nivelul de retea.
Transport Layer - asigura fluxul de date intre doua hosturi pentru nivelul de dedesubt. Exista doua tipuri de protocoale de transport TCP si UDP(User Datagram Protocol)
Controlul Winsock poate sa fie folosit cu Microsoft Access, Visual Basic, Visual C+ +, sau Visual Foxpro.
Pentru a scrie o aplicatie client sau o aplicatie de server nu este nevoie sa fie folosite detaliile de TCP sau a folosi nivelul de baza Winsock API. Invocand metodele controlului, se poate cu usurinta sa ne conectam la o masina de pe Internet, oriunde ar fi aceasta in spatiul public (daca accesul catre IP-ul sau si unul din porturile sale este liber) , prin aceasta putem realiza un schimb de informatii in ambele sensuri.
Aplicatia urmatoare realizeaza acest lucru prin simularea unui server Telnet ce permite o serie de comenzi ce se transmit in final masinii distante.
Protocolul TCP - generalitati
Principiul este foarte simplu utilizand Winsock trebuie doar sa folosim cateva proprietati astfel:
pentru aplicatia client trebuie ca:
sa folosim proprieatea RemoteHost cu IP-ul serverului distant
sa setam RemotePort cu portul folosit pe server;
sa invocam metoda Connect
pentru aplicatia server folosim:
se seteaza LocalPort
se invoca metoda Listen
Cand calculatorul client cere o conexiune, evenimentul ConnectionRequest va fi indeplinit si functie de conditiile de acceptare sau nu se invoca metoda Accept in evenimentul ConnectionRequest.
O data pe conexiune stabilita orice calculator poate sa expedieze si sa primeasca informatiile. Pentru a expedia informatii, se invoca metoda SendData. Informatia va fi primita de perechea cu care a fost realizata sesiunea respectiva.
Ca o caracteristica protocolul TCP este un protocol bazat pe sesiune ce garanteaza ca pachetele ajung la destinatie intacte.
User Datagram Protocol( UDP) este un protocol de conexiune. Spre deosebire de TCP transmiterea de informati cu protocolul UDP nu are nevoie de o sesiune sigura. De asemenea, o aplicatie UDP poate sa fie ori un client sau un server.
Pentru a transmite informatii, mai intai aplicatia client trebuie sa aiba configurat portul prin care se va realiza sesiunea cu ajutorul proprietatii Localport.
Calculatorul(aplicatia) server are nevoie de configurarea proprietatii Remotehost la adresa de Internet a calculatorului clientul, si proprietatea Remoteport la acelasi port ca proprietatea Localport a clientului. Oricare din cele doua aplicatii (server sau client) pot invoca metoda Senddata pentru a incepe sa expedieze mesajele. Cealalata aplicatie va folosi metoda Getdata in evenimentul DataArrival pentru a recupera mesajele expediate.
Ca o caracteristica protocolul UDP este un protocol ce nu garanteaza ca pachetele ajung la destinatie intacte, fiind folosit in special acolo unde validarea informatiilor se face la nivelul aplicatiei de baza.
Proprietatile controlului Winsock:
Bytesreceived Property
Se intoarce cantitatea de informatii primite (in mod curent in primiti tampon). Se foloseste metoda Getdata pentru a recupera informatiile.
Este RO la momentul proiectarii.
Folosire Winsock.BytesReceived
Intoarce: Long
Proprietatea Index (control ActiveX)
Intoarce sau seteaza numarul (indexul) care in mod unic identifica un obiect intr-o colectie.
Folosire: winsock.Index
Proprietatea Index este setata implicit la creare in ordinea de creare a obiectelor intr-o colectie. Indexul pentru primul obiect intr-o colectie va fi intotdeauna 1.
Intoarce: numele masinii locale(NetBIOS). Este RO si nedisponibila la proiectare. Sintaxa: winsock.LocalHostName
Intoarce: String
Intoarce IP-ul masinii locale in format ( de adresa IP punctat xxx.xxx.xxx.xxx). Este RO si nu este disponibila la momentul proiectarii.
Folosire: Winsock.LocalIp.
Intoarce sau seteaza portul local pentru folosire. Este RW si disponibila la momentul proiectarii.
Pentru client, acesta indica portul local pentru a trimite informatiile de la sursa la destinatie. Specificand port 0 aplicatia nu are nevoie de un port specific. In acest caz, controlul va selecta un port aleator. Dupa ce o conexiune este realizata, aceasta este portul local folosit pentru conexiunea TCP.
Pentru server, acesta este portul local pentru a asculta. Daca este specificat port 0, este folosit un port aleator. Dupa ce invocarea metodei Listen, proprietatea contine portul real care a fost selectat.
Folosire: Winsock. Localport
Intoarce : Long
Intoarce numele folosit in cod pentru a identifica o form, control sau accesa un alt obiect. Este RO la rulare.
Folosire: Winsock.Name
Numele implicit pentru obiectele noi este de obicei obiectul plus un intreg unic. De exemplu, primul obiect nou Form este Form1, un obiect nou Mdiform este Mdiform1, si al treilea control Textbox creat pe un formular este Text3.
Proprietatea obiectului Name trebuie sa inceapa cu o litera si sa fie maxim de 40 caractere. El poate sa includa numere si sa contina caracterul de legatura (underscore) Dar sa nu includa semne de punctuatie sau spatii.
Formele nu pot avea acelasi nume cu un alt obiect public ca de exemplu Clipboard, Screen, sau App. sau numele unui alt obiect.
Se poate folosi proprietatea formularului Name cu comanda Dim la momentul executiei pentru a crea alte instante ale formularului. Nu pot exista doua formulare cu acelasi nume la design time.
Se poate crea o matrice de controale de acelasi fel setand acelasi nume. De exemplu, cand se configureaza numele de toate butoane de optiune intr-un grup la Myopt, Visual Basic desemneaza valorile unice la proprietatea Index de fiecare control pentru a il deosebi de ceilalti in matrice.
Se intoarce formularul, obiect, sau colectie care contine un control sau un obiect.
Folosire: Winsock.Parent.
Se foloseste proprietatea Parent pentru a accesa accesoriile, metodele, unui parinte.
De exemplu:
Mybutton.Parent.Mousepointer =4
Protocol Property( Winsock Control)
Se intoarce sau configureaza protocolul, TCP sau UDP, folosit cu controlul Winsock.
scktcpprotocol Implicit. Protocolul TCP.
sckudpprotocol UDP.
Controlul trebuie sa fie inchis (folosind metoda Close) inainte ca aceasta proprietate sa poata sa se initializeze.
Remotehost Property( Activex Controls).
Intoarce sau seteaza numele masinii la distanta la care controlul Winsock expedieaza sau primeste o informatii. De exemplu, atunci cand vrem sa ne conectam la o masina la distanta putem folosi atat numele "prietenos" al hostului (masinii) respective sau adresa sa unica de IP.
De exemplu pentru a folosi serviciul ftp al domeniului microsoft.com , ne vom conecta la :
ftp.microsoft .com sau direct la IP-ul real
RemoteHostIp Property
Se intoarce IP-ul in format "dotted" al masinii departate. Pentru aplicatiile de client, dupa ce o conexiune a fost realizata ca urmare a unei metode Connect, aceasta proprietate contine sirul IP al masinii departate.
Pentru aplicatiile de server, dupa ce conexiunea care vine ca si cerere (evenimentul ConnectionRequest), aceasta proprietate contine sirul IP masinii departate care a initiat conexiunea (deci al clientului).
Cand folosim protocolul UDP, dupa ce apare evenimentul DataArrival, aceasta proprietate contine IP-ul masinii.
Folosire: Winsock.RemoteHostIp.
Remoteport Property( Activex Controls).
Se intoarce sau configureaza portul departat folosit in sesiunea respectiva.
Folosire : Winsock.RemotePort =.
Cand se foloseste proprietatea Protocol, proprietatea RemotePort este setata in mod automat la portul corespunzator implicit pentru fiecare protocol.
Numerele de port implicite sunt aratate in tabelul de jos:
Port Descriere
HTTP, de obicei folosit pentru conexiunile World Wide Web.
SSH, Remote control sub un mecanism de criptare cu key
Telnet
SMTP
Etc.
Returneaza o valoare ce corespunde cu socket-ul pe care controlul il foloseste pentru a comunica cu layer-ul Winsock. Este RO si nu este disponibila decat la run-time dupa realizarea sesiunii.
Sintaxa: Winsock.SocketHandle
Returneaza: Long
Aceasta proprietate a fost destinata pentru a fi folosita cu Winsock API.
State Property( Winsock Control).
Se intoarce starea controlului. Este indisponibila la momentul proiectarii.
Folosire: Winsock.State.
Returneaza: Integer
Valorile pentru
Constanta |
Valoare |
Descriere. |
Sckclosed |
Implicit. |
A inchis. |
Sckopen |
Open. | |
Scklistening |
Listening. | |
Sckconnectionpending |
Conectare in curs. | |
Sckhostresolved |
Host rezolvat. | |
Sckconnecting |
Conectare. | |
Sckconnected |
Conectat. | |
Sckclosing |
Inchide conexiunea. | |
Sckerror |
Eroare. |
|
Index Property( Activex Controls).
Intoarce sau seteaza un control array.
Accept Method
Pentru aplicatiile de server de TCP numai. Aceasta metoda are ca rol sa accepte conexiunea care este in curs si apare intr-un eveniment ConnectionRequest.
Folosire: Winsock.Accept Requestid.
Intrare: Long
Intoarce: Void
Metoda Accept este folosita in evenimentul ConnectionRequest. Evenimentul ConnectionRequest are ca argument corespondent, parametrul RequestId, care ar trebui sa fie preluat la metoda Accept.
Close Method( Winsock Control).
Inchide o conexiune TCP sau un Listen socket pentru ambii clienti
Folosire: Winsock.Close
Argumente: fara
Intoarce: Void
Getdata Method( Activex Controls).
Se intoarce informatia din memoria tampon de la obiectul Clipboard.
Nu are argumente.
GetData Method(Winsock Control)
Intoarce blocul curent de date si il pastreaza intr-o variabila
Folosire: Winsock.GetData data, [type,] [maxLen]
GetData are urmatoarele parti:
Parte |
Descriere |
Object |
Obiectul Winsock in cazul nostru |
Data |
Unde vor fi pastrate datele daca transferul se face cu succes. Daca nu exista date, atunci variabila data va fi setata Empty |
Type |
Optional. Tipul de data care va fi extras |
MaxLen |
Optional. Specifica lungimea maxima la receptionarea unui array sau a unui string. |
Alte setari
Valori pentru tipul typefor type are:
Description |
Constant |
Byte |
VbByte |
Integer |
VbInteger |
Long |
VbLong |
Single |
VbSingle |
Double |
VbDouble |
Currency |
vbCurrency |
Date |
vbDate |
Boolean |
vbBoolean |
SCODE |
vbError |
String |
vbString |
Byte Array |
vbArray + vbByte |
Listen Method.
Creeaza o sesiune in cadrul unei aplicatii server. Metoda Listen este valabila numai pentru conexiunile de tip TCP.
Folosire: Winsock.Listen
Argumente: nu
Intoarce: Void
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |