Inhaltsverzeichnis

24.1.0 Netzwerk-Komponenten

Die Seiten unter http://gambaswiki.org/wiki/doc/network sollten Sie aufmerksam durchlesen. Sie enthalten neben vielen Informationen für den Einsatz der unterschiedlichen Komponenten und deren Klassen auch die Quelltexte für einige Server und Clients.

Wenn Sie Clients erproben wollen, die eine Verbindung zu einem Server im Internet aufbauen, dann ist es sinnvoll zu testen, ob die Clients einen Zugang zum Internet nutzen können. In Ihren Projekten können Sie für einen Test die folgende, gut kommentierte Prozedur CheckNetwork() einsetzen:

[1] Public Sub CheckNetwork()
[2]   Dim sResponse As String
[3]   Dim sIPAddress As String
[4]   Dim sErrText As String
[5] 
[6]   'Check connection to router by trying to obtain the IP address of the gateway
[7]   'Test der Verbindung mit dem Router durch Ermittlung der Gateway IP-Adresse
[8]   Shell ("ip route show | grep 'default via' | grep -oE '" & Chr$(40) & "[[:digit:]]{1,3}" & Chr$(92) & "." & Chr$(41) & "{3}[[:digit:]]{1,3}'") To sIPAddress
[9]   If sIPAddress = "" Then
[10]     'Get a brief status of all available network interfaces
[11]     'Hole den Status (Überblick) aller Netzwerk-Schnittstellen
[12]     Shell ("nmcli device status") To sResponse
[13]     sErrText = ("<pre><font face='Noto Sans' size='3'>No connection to lokal router! Please check the router and network connections:")
[14]     sErrText &= "<pre><font face='Monospace' size='2'>" & sResponse
[15]     sErrText &= ("<pre><font face='Noto Sans' size='3'>The application will be terminated.")
[16]     Message.Error(sErrText)
[17]     Quit
[18]   Else 
[19]  'Additional check for VMs, which may have provided a gateway address although they have no connection to the router. This is done by trying to connect to the Web-Interface of the router.
[20]  'Zusätzliche Prüfung für VMs, die u.U. eine Gateway-Adresse geliefert haben, obwohl keine Verbindung zum Router besteht! Das wird durch den Versuch eines Verbindungsaufbaus mit dem Web-Interface des Routers geleistet.
[21]     Shell ("wget -q --spider " & "http://" & Left$(sIPAddress, Len(sIPAddress) - 1) & " ; echo $?") To sResponse
[22]     If Left$(sResponse, 1) <> "0" Then
[23]       'Get a brief status of all available network interfaces
[24]       'Hole den Grob-Status aller Netzwerk-Schnittstellen
[25]       Shell ("nmcli device status") To sResponse
[26]       sErrText = ("<pre><font face='Noto Sans' size='3'>No connection to lokal router! Please check the router and network connections:")
[27]       sErrText &= "<pre><font face='Monospace' size='2'>" & sResponse
[28]       sErrText &= ("<pre><font face='Noto Sans' size='3'>The application will be terminated.")
[29]       Message.Error(sErrText)
[30]       Quit
[31]     Endif
[32]   Endif
[33]  
[34]   'Check availability of Internet by testing the availability of the Google home page.
[35]   'Verfügbarkeit des Internets testen durch einen Verbindungsaufbau mit der Google-Homepage.
[36]   If Exist("/usr/bin/curl") Then 
[37]  'Check whether curl is installed. If yes - use it. 
[38]  'Testen, ob curl installiert ist. Wenn ja – nutzen Sie das Programm.
[39]     Shell ("curl ifconfig.me") To sResponse
[40]     'If the Internet was connected, sResponse will contain the external (WAN) IP address.
[41]     'Wenn das Internet verbunden war, enthält sResponse die externe WAN-IP-Adresse.
[42]     'Das ist die IP-Adresse, die vom Provider zugewiesen wurde.
[43]     Print "External WAN IP address: "; sResponse  
[44]     If Len(sResponse) <= 7 Then
[45]        Message.Error(("No connection to the Internet!<hr>The application will be terminated."))
[46]       Quit     
[47]     Endif
[48]   Else
[49]     'Use this alternative method if curl is not installed
[50]     Shell ("wget -q --spider google.com ; echo $?") To sResponse
[51]     If Left$(sResponse, 1) <> "0" Then
[52]       Message.Error(("No connection to the Internet!<hr>The application will be terminated."))
[53]       Quit
[54]     Endif
[55]   Endif
[56]  
[57] End

24.1.0.1 Komponente gb.net

Die Komponente gb.net ermöglicht es Ihnen, Netzwerk-Clients und Netzwerk-Server in Gambas zu implementieren. Außerdem können Sie die serielle Schnittstelle (RS232/V24) verwalten. Die Komponente enthält folgende Klassen:

24.1.0.2 Komponente gb.net.curl

Die Komponente gb.net.curl implementiert ein High-Level-Netzwerkprotokoll-Management auf der Basis der Curl-Bibliothek. Die Komponente ermöglicht den Abruf von http- und ftp-Dateien – möglicherweise auch anderer Dateien – über ein Netzwerk. Die Komponente enthält folgende Klassen:

24.1.0.3 Komponente gb.mime

Die Komponente gb.mime erlaubt es Ihnen, eine Zeichenfolge zu analysieren und diese in eine MIME-Nachricht zu wandeln und umgekehrt. Die Komponente basiert auf der gmime-Bibliothek. Die Komponente enthält folgende Klassen:

24.1.0.4 Komponente gb.net.pop3 und gb.net.smtp

24.1.0.5 Komponente gb.web

Die Komponente gb.web erlaubt es Ihnen, eine Web-Anwendung zu entwickeln – basierend auf einem CGI-Skript. Die Komponente enthält folgende Klassen:

24.1.0.6 Komponente gb.markdown

Die Komponente gb.markdown ermöglicht es Ihnen, die Gambas-Markdown-Syntax in HTML zu konvertieren. Diese Umwandlung kann durch den Einsatz von Eigenschaften und Methoden der Markdown-Klasse angepasst werden. Die Komponente enthält folgende Klassen:

24.1.0.7 Komponente gb.map

Mit den Klassen der Komponente gb.map gelingt es, Kartenkacheln aus verschiedenen Quellen in mehreren Schichten anzuzeigen. Die Komponente enthält folgende Klassen:

24.1.0.8 Komponente gb.map

Mit Hilfe der Komponente gb.dbus nutzen Sie das D-Bus-Interface Ihres Rechners. Die Komponente enthält folgende Klassen:

Hinweis:

Sie sollten beachten, dass die Komponente gb.web.form – eingeführt in Gambas 3.9 – als veraltet gilt. Für neue Projekte ist die adäquate Komponente gb.web.gui (3.15) einzusetzen.

Download