Textbook vizuale de bază - utilizare Winsock kontrola

Utilizarea Winsock kontrola

Acest text este o traducere liberă din MSDN și demonstrează posibilitatea schimbului de date prin rețea folosind componente Winsock.

Ceva completat și corectat o eroare din eșantion MSDN datorită căreia transferul a fost doar o singură cale.

Utilizarea componentei Winsock

WinSock componentă vă permite să conectați la o mașină de la distanță și schimb de date cu ea, folosind UDP (User Datagram Protocol) și TCP (Transmission Control Protocol). Ambele protocoale pot fi folosite pentru a crea aplicații client-server. Precum și de control timer, de control WinSock este invizibil în timpul rulării.

Cum să-l folosească?

- Pentru a crea o aplicație client, care va aduna informațiile înainte de a trimite-l la un server central;

- Pentru a crea un server de aplicații, care va acționa ca un colector și custode de informații dintr-o varietate de aplicații client;

Protocol de selecție.

Când aveți de gând să utilizați un WinSock, trebuie să decideți ce protocol de utilizat - TCP sau UDP. Principala diferență dintre ele constă în modul de organizare a comunicării:

Conexiune bazată pe protocolul UDP, cum ar fi vocea, mesajul este trimis de la un computer la altul, dar nu este clar dacă acestea pot auzi reciproc. În plus, cantitatea maximă de date de transmisie este stabilită de către rețea.

Posibilitatea de aplicația pe care o creați va depinde de protocolul pe care îl alegeți. Iată câteva întrebări care vă pot ajuta să selectați protocolul corespunzător: Va aplicația va necesita o notificare de la server sau client, atunci când datele sunt trimise sau primite?

Dacă este așa, atunci protocolul TCP necesită o conexiune stabilită între emițător receptor și date.

Fie că datele transmise sunt destul de grele (cum ar fi imagini sau fișiere de sunet)? În cazul în care este stabilită conexiunea, protocolul TCP va menține integritatea garantată și transmise date. O astfel de conexiune, deoarece nevoia de mai multe resurse de calcul, se poate face mai lent.

Vor fi transmise datele în porțiuni sau într-o singură sesiune? De exemplu, dacă creați o aplicație care informează unele calculatoare care au sarcina a fost finalizată, protocolul UDP este mai potrivit. UDP este de asemenea bluchshe pentru transmiterea cantități mici de date.

Setarea protocolului.

Pentru a instala un protocol care va utiliza aplicația ar trebui să proiecteze timp în fereastra de Proprietăți, selectați protocolul de proprietate și setați-l sckTCPProtocol sau sckUDPProtocol. Acest lucru se poate face în mod programatic:

Determinarea numele computerului.

Bazele conexiuni TCP.

Când creați o aplicație care utilizează protocolul TCP în primul rând, trebuie să decidă este ceea ce va fi clientul aplicație sau server. Dacă creați un server de aplicație, atunci aplicația va asculta la portul specificat. Atunci când aplicația client depune o cerere de soedienie, serverul de aplicație poate accepta cererea și de a stabili, prin urmare, soedieneie. În cazul în care se stabilește conexiunea, aplicația client și aplicația server poate comunica liber.

Următorii pași vă vor permite să creați un server de aplicație elementară:

Pentru a crea un server TCP

  • Crearea unui proiect nou standard EXE.
  • Înlocuiți numele formei în mod implicit pe frmServer.
  • Formele de proprietate legendă, de tip „server TCP“
  • În meniul Project \ Components, adăugați Microsoft Winsock Conrol 6.0
  • Trageți pictograma componentei Winsock din bara de instrumente și puneți-l pe formular; schimba numele componentei pe tcpServer.

Adăugați două textbox pe elementul de formular. Pe numele proprietății de primul tip de câmp de text txtSendData, un al doilea txtOutput.

Adăugați următorul cod la forma:

Acțiunile descrise mai sus efectuate de tine, va duce la crearea unui server de aplicații simple. Dar, în scopul de a finaliza pe deplin sarcina, aveți nevoie pentru a crea mai mult, iar aplicația client.

Pentru a crea o aplicație TCP-client

Adăugați o nouă formă la proiect și denumiți-o frmClient. Și de a schimba proprietatea legendă a formularului de „TCP Client“.

Trageți și plasați componenta Winsock pe un formular și modificați proprietatea numele de „tcpClient“.
  • Adăugați două de control casetă text pe formularul frmClient.
  • Nume primul set txtSend, iar al doilea txtOutput.
  • Trageți CommandButton pe forma și setați proprietatea numele de „cmdConnect“.
  • Schimbarea proprietatea subtitrării a butoanelor de pe „Connect“.

Adăugați următorul cod în formular.

Salvați proiectul într-un director separat.

Dacă doriți să încercați modul în care aplicația va efectua legătura între cele două calculatoare, va trebui să efectuați următoarele acțiuni:
  • Se scoate din linia de aplicare frmClient.Show forme de cod de server.
  • În cadrul proiectului Explorer, faceți clic dreapta pe formularul frmClient.frm și din meniul selectați Eliminare frmClient.frm apoi salvați proiectul sub numele de Server1.
  • Deschideți prima versiune a proiectului și, în același mod de a elimina din proiect deja forma frmServer.frm.
  • Creați modul de exe frmClient-A și rescrie-l la un computer la distanță și rulați-l acolo.

Notă: În cazul în care computerul la distanță nu este setat să VB fie pregătiți pentru ceea ce va trebui să-l rescrie din WINDOWS \ SYSTEM \ mswinsck.ocx și să îl înregistrați cu comandă Windows \ SYSTEM \ regsvr32.exe mswinsck.ocx

În cazul în care cererea va necesita unele module suplimentare dll copiați-le la aparat la telecomandă.
  • În mașina lui, deschideți Project Server și rulați-l.
  • Pe mașina de client, faceți clic pe butonul Connect și introduceți textul în interiorul unei cutii de text txtSendData pe fiecare formular și să se asigure că același text apare în caseta de text txtOutput în aplicația care rulează pe un alt calculator.

Prelucrarea de mai mult de o cerere de conectare.

aplicație server, pe care le-am creat poate prelucra mai întâi o singură solicitare pentru fiecare conexiune. Cu toate acestea, este posibil să se ocupe de mai multe cereri de conectare, folosind același element de operare ca unul dintr-o serie de elemente de control.

În acest caz, închideți opțional, conexiunea - pur și simplu a crea o nouă versiune a elementului de comandă (folosind proprietatea Index) și invoca metoda Accept pentru această nouă versiune a elementului de control.

Următoarea proprietate textul programului Index, plasat pe formularul sckServer Winsock-componenta se atribuie o valoare de 0, astfel încât elementul de comandă devine parte dintr-o serie de elemente de control. În secțiunea Declarații descrie variabila intMax locale. Când matrița are loc evenimentul de încărcare intMax variabilă se atribuie valoarea 0 și LocalPort proprietate primul element de matrice de elemente de control al valorii atribuite 1001. Numai după metoda numită Listen a elementului de control, începe să asculte un port specific. Atunci când o nouă solicitare de conexiune de intrare este verificată valoare Index și dacă este egal cu 0 (valoarea elementului, care ascultă portul). Astfel, elementul care ascultă portul, se va incrementa variabila intMax și de a folosi această variabilă pentru a crea o nouă matrice. Acest nou element va fi utilizat pentru procesarea unei cereri de conectare.

baza de UDP.

Creați aplicații care utilizează protocolul UDP este mai ușor decât pentru a crea aplicații care utilizează protocolul TCP. Faptul este că UDP nu necesită o conexiune deja stabilită, ca o condiție necesară pentru transferul de date. Aplicația utilizează o conexiune TCP, un element Winsock ar trebui întotdeauna „asculta“ la portul, așteptând până când o altă aplicație va iniția conexiunea prin utilizarea metodei Connect.

pentru că ambele computere se presupune a fi egală cu o conexiune, o putem numi un compus de tip peer-to-peer. Pentru a demonstra acest sens, vom crea un așa-numita aplicație de chat permite două persoane să comunice în timp real.

Pentru a crea o conexiune UDP:

Crearea unui proiect Standard EXE.
  • Schimbarea proprietatea numele formei la frmPeerA.
  • Schimbarea proprietatea legendă a formularului de „Peer A“
  • Trageți pictograma din componenta Winsock bara de instrumente și puneți-l pe formular. Atribuirea unui nume de udpPeerA valoarea proprietății.
  • Schimbarea proprietății Protocol la UDPProtocol.
  • Adăugați două casete de text la forma.

Numele primul este de a fi un al doilea txtSend txtOutput. Adăugați cod în formularul de mai jos.

Pentru a crea o a doua aplicație UDP.

  • Adăugați un formular standard pentru proiect.
  • Schimbarea numelui formularul de pe frmPeerB.
  • Schimbarea proprietatea legendă a formularului de „Peer B“.
  • Trageți și plasați pictograma componenta Winsock pe formular.
  • Schimbarea numelui pe Winsock udpPeerB.
  • Schimbarea protocol de proprietate la UDPProtocol.
  • Adăugați două casete de text la forma.

Primul nume trebuie să fie txtSend, un al doilea txtOutput.

Adăugați următorul cod în formular.

Pentru a încerca aplicația rula proiectul, și tastați în caseta de text txtSend fiecare formă de orice text.

Acest text va apărea în casetele de text txtOutput altă formă.

Pe Bind metoda.

După cum se arată în exemplul de mai sus, ar trebui să apelați Bind metodă, atunci când se creează o aplicație UDP. Metoda Bind alocă un port local pentru utilizarea elementului Winsock. De exemplu, atunci când legați elementul Winsock la portul 1001, atunci nici o altă aplicație nu poate folosi acest port pentru a asculta. Acest lucru poate fi util atunci când doriți să împiedice orice altă aplicație pentru a utiliza acest port.

Metoda Bind are un alt argument opțional.

În cazul în care computerul are mai mult de un adaptor de rețea, LOCALIP argument vă va permite să identifice adaptorul pentru a fi utilizat. Dacă nu specificați acest argument, componenta Winsock va utiliza adaptorul de rețea, care este prima în listă, pe care le puteți vedea în panoul de \ System adaptoare de rețea \ Start \ Settings \ de control.

Când se utilizează protocolul UDP, puteți modifica proprietățile și remotehost RemotePort păstrând în același timp legarea la aceeași LocalPort. Dacă utilizați protocolul TCP, înainte și schimba proprietățile remotehost RemotePort, trebuie să închideți mai întâi conexiunea.