VB - 35. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

VB - 35. lekceVB - 35. lekce

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

VB - 35. lekce

Google       Google       5. 12. 2005       17 775×

35.1 Komponenta WinSock Úvod
35.2 Tvorba programu pro příjem dat (Server)
35.3 Program pro odesílání zpráv (klient)
35.4 Tvorba aplikace pro dvoustranou komunikaci
35.5 Další použití
35.6 Domácí úkol
35.7 V Další Lekci

Reklama
Reklama

35.1 Komponenta WinSock Úvod

Nejdříve si povíme, k čemu tato komponenta slouží, a pak se podíváme na to, jak ji využít. A pak si nastíníme něco o komponentě, jak vytvořit takové malé vlastní, dejme tomu, ICQ.

Komponenta WinSock umožňuje jednoduchou síťovou komunikaci. Můžeme si tedy posílat krátké zprávy nebo příkazy na vzdálený PC.

Ještě, než se pustíme do tvorby složitých programů, řekneme si nějaké základní věci. My budeme komunikovat přes IP adresu. To znamená, že ji budeme muset znát. A budeme komunikovat přes určitý port. Pokud spolu budou chtít dva počítače komunikovat, budou muset mít stejný zapnutý port. Více si o tom všem povíme na praktických příkladech.

Komponentu musíme nejdříve přidat: Komponenty >> Microsoft WinSock Control

35.2 Tvorba programu pro příjem dat (Server)

Následující kód tvoří základ, bez kterého se neobejdeme.


Private Sub Form_Load()
    Winsock1.RemotePort = 326 'nastavíme číslo portu
    Winsock1.Listen 'nastavíme poslech na tomto portu
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    Winsock1.Close ' uzavře ostatní komunikaci
    Winsock1.Accept requestID 'akceptuje příchozí požadavek na připojení
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Winsock1.GetData (nazev_promene) 'do teto proměnné se data uloži
End Sub

V události Form Load nastavíme port. A taky komponentu na to, aby sledovala to, co se děje na portu 326. Pokud se na portu objeví požadavek na přijmutí spojení, nastane událost komponenty Winsock ConnectionRequest. Ta uzavře ostatní spojení a toto spojení akceptuje. Pokud jsme již úspěšně spojeni a přijdou přes komponentu nějaká data, nastane událost DataArrival a v ní se došlá data uloží do proměnné. Jak s nimi naložíte, je jen na vás.

35.3 Program pro odesílání zpráv (klient)

Klient je druhá část, kterou musíme naprogramovat, abychom to mohli využít.


Private Sub cmdConnect_Click()
    Winsock1.RemoteHost = ip_adresa 'zde zadáme IP adresu ke které se chcem připojit
    Winsock1.RemotePort = 326 'zde číslo portu na kterém chceme komunikovat
    Winsock1.Connect 'tímto vyšleme požadavek na připojení
    
    Do Until Winsock1.State = sckConnected
        DoEvents
        If Winsock1.State = sckError Then GoTo error
    Loop
    Exit Sub
    
error:
    MsgBox "spojení se nezdařilo"
End Sub


Private Sub cmdSend_Click()
    If Winsock1.State = sckConnected Then
        Winsock1.SendData (Data)
    Else
        MsgBox "nejse připojen"
    End If
End Sub

Nejprve komponentě předáme číslo portu a IP adresu, ať ví, jak a s kým komunikovat. Potom jí řekneme, ať se připojí a vyčkáváme v cyklu, dokud se nepřipojí. V cyklu také kontoluje, zda nedošlo k chybě, pokud ano, program nás o tom informuje a ukončí pokus o připojení. Další část kódu tvoří procedura, která odesílá data, ta první zkontroluje, zda- li jste připojen a pokud ano, odešle data na server. Je vhodné připojení vždy uzavírat příkazem:


Winsock1.Close

Musím vás také upozornit, že špatně zadaná IP adresa může způsobit pád celého Visual Studia. A další chybou může být to, že si nějakým způsobem zablokujete komunikační port. Pak nezbývá nic jiného, než ho změnit. Časem se to zase srovná.

Tuto aplikaci můžete otestovat při použití této IP 127.0.0.1

35.4 Tvorba aplikace pro dvoustranou komunikaci.

Tato aplikace má proti předchozím dvěma jednu nevýhodu, nelze ji testovat na jednom PC. Ale zbytek jsou jenom výhody :). Rovnou už se podíváme na kód:


Private Sub Form_Load()
    Winsock1.LocalPort = 1000 'Nastavení portu
    Winsock1.Listen 'nastavení aplikace ne poslech na portu
End Sub

Private Sub cmdConnect_Click()
    If Winsock1.State <> sckConnected Then 'Zkusíme zda nejsme připojení pokud ne tak se připojíme
        If Winsock1.State <> sckClose Then Winsock1.Close 'Uzavřeme spojení pokud není uzavřeno
        Winsock1.RemotePort = 1000 'Natevní portu
        Winsock1.RemoteHost = strIP 'Nastavení IP
        Winsock1.Connect 'Příkaz k připojení
        
        Do While Winsock1.State <> sckConnected 'testuje zdali spojení proběhlo úspěšně
            DoEvents 'příkaz k čekání
            If Winsock1.State = sckError Then 'Vyvolá výstrahu pokud se nepovede spojení
                ' nějaký způsob výstrahy, že se nepovedlo připojit
                Exit Sub
            End If
        Loop
    End If
End Sub

Private Sub cmdSendData_Click()

    If Winsock1.State = sckConnected Then
        Winsock1.SendData (text_zprávy)
    Else
        'upozornění o tom, že nejste připojeni
    End If
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    If Winsock1.State <> sckClosed Then Winsock1.Close 'uzavření winsock
    Winsock1.Accept requestID 'Akceptování připojení
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim Prichozi_Data As String
    Winsock1.GetData Prichozi_Data
    'zpracování příchozích dat. Například zobrazením messageboxu nebo v okně chatu
End Sub

Kód je, řekl bych, dostatečně okomentován, tak není třeba psát něco dalšího.

35.5 Další použití

Pomocí této komponenty můžete dělat více, než jen posílat zprávy, můžete posílat i soubory, a to tím způsobem, že je rozložíte na malé řetězce a potom je zase složíte. Mužete pomocí ní posílat i příkazy například pro správce učeben. Kdy jdou na počítačích ostatních programy pro příjem a na hlavním počítači je vysílač, kterým můžeme všechny PC vypnout.

Pomocí této komponenty můžete zjistit i vlastní IP a název PC. A to tímto příkazem:


Print Winsock1.LocalIP
Print Winsock1.LocalHostName

35.6 Domácí úkol

Cokoliv co používá komponentu Winsock.

35.7 V Další Lekci

Asi tvorba vlastních binárních souborů.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Jiří ChytilAutor programuje ve VB, zajímá se o elektrotechniku, studuje na SOŠ Elektrotechnické - obor číslicová technika.
Web    

Nové články

Obrázek ke článku Ericsson ConsumerLab Report: rozšířená realita je další úrovní gamingu

Ericsson ConsumerLab Report: rozšířená realita je další úrovní gamingu

Celkem 66 % uživatelů zajímá rozšířená realita v oblasti gamingu. Mezi nimi je i 35 % těch, kteří jinak hry nehrají.
Pro téměř 50 % respondentů by bylo zajímavé zapojení virtuální objektů do reálného světa. Objekty by zůstaly tam, kde je při hře „umístili“.
Až 43 % uživatelů láká využití rozšířené reality ve sportu

Reklama
Reklama
Obrázek ke článku Instalace nejnovější verze Apache 2.4, PHP 7.3, MariaDB 10.3 a Memcached na Windows 10

Instalace nejnovější verze Apache 2.4, PHP 7.3, MariaDB 10.3 a Memcached na Windows 10

Buďte při vývoji efektivní! Pomocí tohoto návodu během chvíle vytvoříte ze svého počítače lokální webový server. Vyzbrojíte jej vším, co budete při práci potřebovat: Apache 2.4, PHP 7.3, MariaDB 10.3 a Memcached. Je to plná polní pro webové vývojáře s Windows 10. Navíc poradíme, jak mít na localhostu více projektů pomocí VirtualHost.

Obrázek ke článku Do poskytovatele managed hostingových služeb vshosting~ vstupují zahraniční investoři

Do poskytovatele managed hostingových služeb vshosting~ vstupují zahraniční investoři

Po více než roce jednání do vshosting~ vstoupili 3 investiční skupiny z Německa: Pecunalta, BrainWeb Investment a Quines Capital. Jde o investiční skupiny, které mají účast na projektech jako PlusServer (největší managed provider v Německu a jeden z největších v Evropě), PLESK, cPanel, CloudLinux, GoDaddy (největší světový hostingový poskytovatel z USA), či Acronis, pomohou vshosting~ v jeho plánované mezinárodní expanzi na další zahraniční trhy. Ve vshosting~ nyní drží 75% podíl, zbylých 25 % zůstává zakladatelům vshosting~, kterými jsou Damir Špoljarič (CEO) a Jan Martinů (CTO).

Obrázek ke článku Posuňte své znalosti IT na výrazně vyšší úroveň

Posuňte své znalosti IT na výrazně vyšší úroveň

Zájem o IT odborníky je v současnosti v tuzemsku i v zahraničí enormní a vedení firem si moc dobře uvědomuje, jak těžké je získat ty správné. I přesto, že je odborníků na trhu dlouhodobý nedostatek, stále platí, že část z nich je - a bude - placena výrazně lépe než ti ostatní. Proč tedy nebýt mezi nimi?

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032019 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý