Creeaza.com - informatii profesionale despre


Cunostinta va deschide lumea intelepciunii - Referate profesionale unice
Acasa » scoala » informatica » retele calculatoare
CONTROLUL WINSOCK

CONTROLUL WINSOCK


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 suita de protocoale TCP/IP.

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 suita de protocoale adiacente.



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.

Protocolul UDP - generalitati.

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.

Proprietatea LocalHostName

Intoarce: numele masinii locale(NetBIOS). Este RO si nedisponibila la proiectare. Sintaxa: winsock.LocalHostName

Intoarce: String

Proprietatea LocalIP

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.

Proprietatea LocalPort

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

Proprietatea Name

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.

Proprietatea Parent

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.


Constanta Valoare Descriere.

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.

FTP. Transfer de fisiere

SSH, Remote control sub un mecanism de criptare cu key

Telnet

SMTP

Etc.

SocketHandle Property

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 proprietatea State sunt:

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.

METODE ale controlului Winsock

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


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.