Verfügbare Informationen zu "Winsock Tutorial"
Qualität des Beitrags: Beteiligte Poster: proxy88 Forum: http://88.84.147.233/forum/index.php Forenbeschreibung: Neue Domain clx-projekt.dl.am hier drauf !!!! aus dem Unterforum: Visual Basic Antworten: 1 Forum gestartet am: Freitag 27.10.2006 Sprache: deutsch Link zum Originaltopic: Winsock Tutorial Letzte Antwort: vor 17 Jahren, 5 Monaten, 27 Tagen, 11 Stunden, 43 Minuten
Alle Beiträge und Antworten zu "Winsock Tutorial"
Re: Winsock Tutorial
proxy88 - 29.10.2006, 15:11Winsock Tutorial
Bevor das eigentlichem Tutorial über das Winsock - Steuerelement anfängt, folgt zuerst eine kleine Lehre über das Internet:
Im Internet hat jeder PC eine Anschlussnummer, die als IP (=Internet-Protokoll) bezeichnet wird. Ein IP-Adresse ist 32Bit lang und hat das format ****.****.****.****, dabei entspricht jeder Wert einer Zahl im Bereich 0 - 255. Ein Provider vergibt (meistens) jedes Mal, wenn sich der User neu einwählt eine neue IP-Adresse. Da man sich die Zahlen der IP Adressen so schlecht merken kann, fing man an, IP Adressen Namen zu vergeben. Diese Technik nennt man Domänennamen. Eine zulässige Domäne ist z.b. http://www.activevb.de; dabei ist das .de die Top-Level Domäne oder Domäne höchster Ebene. Ander Top-Level Domains sind z.B.: .edu für education , .gov für government, .com für commercial, .NET für network, .org für organisation usw...
www steht für world-wide-web; http (HyperText Transfer Protocol) ist das im Internet verwendete Protokoll um sich Site/Pages anzusehen.
Da alle Information, die über das Internet versendet werden, eine gültige IP-Adresse verwenden müssen, muss es auch einen Prozess geben eine Domäne in eine IP Adresse umzuwandeln. Diesen Prozess nennt man Domain Name Server (DNS). Wenn ihr PC mit dem Internet verbunden ist, dann hat er für den DNS entweder eine feste IP Adresse oder bekommt von ihrem Provider eine dynamische zugewiesen.
Um Informationen über das Internet auszutauschen, genügt es nicht, zu wissen wie die IP des Remotes (des anderen PCs) ist. Einige Dienste im Internet stellen mehrer Services zur Verfügung. Daher muss es eine Möglichkeit geben, wie man mehrer Anwendungen auf einem PC mit einer IP Adresse laufen lassen kann. Das geschieht über Anschlussnummern (engl. Ports) Eine Anschlussnummer ist einfach eine weitere Adresse, die sich auf den jeweiligen PC bezieht. Anschlussnummern können Nummern von 0 bis 65.535 verwenden. So gibt es für die verschiedenen Protokolle reservierte Anschlussnummern, z.B.: für das http- Protokoll den Port 80. Im Laufe der Jahre haben sich die Benutzer auf jeweilige Protokolle geeinigt. Um z.B.: ein HTML Dokument abzurufen, verwendet man das http - Protokoll. Weiter:
Port Name Beschreibung
13 Daytime Datum/Uhrzeit Protokoll
20 ftp-data FTP(File-Transfer-Protocoll);darüber werdenDateien zw. Systemen ausgetauscht
21 ftp FTP, Steueranschluss
23 Telnet Telnet- Stellt einen Terminal Zugriff auf einem Remote-PC zur Verfügung
25 smtp SMTP(Simple Mail Transport Protocol)- Überträgt E-mail nachrichten zw. Systemen
37 Time Zeitprotokoll
53 Domain DNS- Konvertiert einen Domänennamen in eine IP-Adresse
79 Finger Finger-Protokoll - Gibt Informationen über einen Remote-Computer oder einen remote Anwender zurück
80 www-http WWW, http - Ruft Dokumente im HTML Format ab
110 Pop3 POP3 (Post office Protocol) - ruft E-Mail-nachrichten ab
119 nntp NNTP (Network News Transport Protocol) ruft News Artikel ab
Protokolle dienen den PC dazu, Informationen bei einem andern PC anzufordern und dessen Antwort auch zu verstehen. Protokolle sind in erster Linie gut dokumentierte Befehlsketten und eine reihe zulässiger Antworten. Alle Protokolle basieren auf dem TCP oder UDP Protokoll
* TCP steht für Transmission Control Protocol und erstellt eine virtuelle Verbindung zw. zwei PCs.
* UDP steht für User Datagram Protocol. Dies ist eine Verbindungsloses Protokoll, das eine nachricht von einem PC zu dem anderen sendet ohne Garantie dass es auch wirklich ankommt.
Ein wichtiger Unterschied zw. TCP und UDP besteht darin, dass TCP eine bestehende verbindung zu einem PC braucht um Daten zu senden, während UDP das nicht braucht.
So jetzt genug gelehrt ;) Jetzt kommen wir zum eigentlichem Thema: das Winsock Steuerelement. Winsock ist eine Name, der aus Windows Sockets entstanden ist. Es ist eine ActiveX Komponente von Microsoft und auf der Toolbar mit einem rechten Mausklick unter Komponenten "Microsoft Winsock Control" einzufügen. Mit Winsock ist es möglich, sich mit einem anderen PC zu verbinden (Client/Server) oder auf einen Verbindung zu warten (Server/Client). Wir halten uns auf das Sprichwort "learning by doing" und zögern nicht lange. Da fast alle Anwendungen nur das TCP Protokoll unterstützen (darunter auch diejenigen, die zusätzlich UDP unterstützen) verwenden wir diesen Protokoll.
Mit dem Eigenschaften des Winsock - Steuerelementes könne sie die Socket Verbindung konfigurieren:
Eigenschaft Beschreibung
BytesReceived Gibt die Anzahl der Bytes im Empfangpuffer wieder.
LocalHostName Gibt den Namen des lokalen PCs wieder.
LocalPort Gibt die Anschlussnummer, die verwendet wird, wieder.
Protocol Gibt entweder TCP oder UDP an.
RemoteHostIP Gibt die IP - Adresse des Remotes wieder.
RemoteHost Gibt den Namen des Remotes wieder.
RemotePort Gibt die verwendete Anschlussnummer des Remotes wieder.
SocketHandle Gibt einen Verweiß auf die darunterliegende Winsock - API - Zugriffsnummer wieder.
State Gibt den Status des Steuerelements an.
*Achtung: Die Eigenschaft enthalt gegebenenfalls die Netzwerk IP Adresse nicht den Internet IP!
Die Eigenschaft State gibt den aktuellen Status über die Verbindung an. Sie kann folgende Werte haben:
Status Wert Beschreibung
SckClosed 0 Der Socket ist geschlossen
SckOpen 1 Der Socket ist geöffnet
SckListening 2 Der Socket ist empfangsbereit
SckConnectionPending 3 Die Verbindung wird aufgebaut
SckResolvingHost 4 Der Remote-Host-Name wird in eine IP-Adresse umgewandelt
SckHostResolve 5 Der Remote-Host-Name wurde in eine IP-Adresse umgewandelt
SckConnecting 6 Der Socket verbindet sich zu dem Remote
SckConnected 7 Der Socket hat sich zu dem Remote verbunden
SckClosing 8 Der Remote hat die Verbindung getrennt
SckError 9 Ein Fehler ist aufgetreten
Die Eigenschaften LocalHostName und LocalIP sind schreibgeschützt und können nicht verändert werden. Die IP Adresse kann nur vom Provider geändert werden!
Mit der Eigenschaft RemoteHostIP kann die IP Adresse des Remotes angegeben werden. RemoteHostName kann auch einen Domänennamen beinthalten,Winsock wandelt ihn selbstständig in eine IP Adresse um!
Server/Client:
Um eine Server(Zuhörer)/Client(Verbinder) zu entwickeln, müssen folgende Schritte beachtet werden:
Server:
* Ein Port muss reserviert werden
* Der RemotePort muss definiert werden
* Eine Verbindung muss Aktzeptiert werden
Client:
* Der RemoteIP muss eingegeben werden
* Die Connect-Methode (Events) muss ausgelöst werden
* Eine Verbindung muss Aktzeptiert werden
Folgende Methoden umfasst das Winsock Steuerelement:
Methode[Event] Beschreibung
Accept Akzeptiert eine Anfrage im Connection_Request Ereignis
Bind Wählt den lokalen Netzwerk-Adapter und die lokale Anschlussnummer aus
Close Schließt das Socket
Connect Baut eine TCP-Verbindung zu dem Remote auf
GetData Empfängt die Daten aus dem Empfangsbuffer und leert ihn
Listen Wartet auf eine Verbindung
PeekData Empfängt Daten von dem Empfangspuffer, leert ihn aber nicht
SendData Sendet Daten auf den Remote
Die Listen Methode funktioniert nur beim TCP-Protokoll. Die Methode wartet, bis sich jemand verbindet und löst dann das Connection_Request Ereignis aus. Mit Accept und der aktuellen requestID steht die Verbindung dann. Die Connect Methode ist ebenfalls für das TCP-protokoll gedacht, mit dem eine Verbindung aufgebaut werden kann. Sobald die Verbindung erstellt ist, löst sich das Ereignis Connect aus.
Die Ereignisse auf einen Blick:
Event Beschreibung
Close Wird ausgelöst, wenn der Remote eine TCP Verbindung trennt
Connect Wird ausgelöst, wenn eine Verbindung zum Server hergestellt ist
ConnectionRequest Wird ausgelöst, wenn sich eine Verbindung anbahnt
DataArrival Wird ausgelöst, wenn vom Remote Daten empfangen werden
Error Wird ausgelöst, wenn eine Fehlerbediendung eintritt
SendComplete Wird ausgelöst, wenn die Datenübertragung zum Remote abgeschlossen ist
SendProgress Wird periodisch während einer Datenübertragung ausgelöst
Der Server:
Code:
Option Explicit
Private Sub Command1_Click()
'winsock wird geschlossen
Winsock1.Close
'Der Port für den Server wird definiert
Winsock1.LocalPort = Text1.Text
'Server wartet auf einen Verbindung
Winsock1.Listen
Command1.Enabled = False
End Sub
Private Sub Command2_Click()
'Chat
Text3.Text = Text3.Text & "Server: " & Text4.Text & vbCrLf
Text3.SelStart = Len(Text3.Text)
'Ein Befehl plus Text werden gesendet
Winsock1.SendData "msg" & Text4.Text
End Sub
Private Sub Timer1_Timer()
'Label1 gibt den Status wieder
Label1.Caption = Winsock1.State
End Sub
Private Sub Winsock1_Close()
Text4.Enabled = False
Command2.Enabled = False
Command1.Enabled = True
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
'Winsock wird geschlossen da es noch
'auf verbindungen wartet
Winsock1.Close
'Eine Verbindung wird akzeptiert
Winsock1.Accept requestID
Text4.Enabled = True
Command2.Enabled = True
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Result As String
'Die Variable result gibt die empfangenen Daten wieder;
'Entweder die variable Result muss als String dim. werden
'oder bei Winsock1.GetData Result muss hinten vbstring
'dazugeschrieben werden
Winsock1.GetData Result
'Befehlauswertung
Select Case Left(Result, 3)
'Chat Befehl
Case "msg"
Text3.Text = Text3.Text & "Client: " & Mid(Result, _
4) & vbCrLf
Text3.SelStart = Len(Text3.Text)
End Select
End Sub
Der Client
Code:
Option Explicit
Private Sub Command1_Click()
'Winsock wird geschlosse
Winsock1.Close
'Die IP des Servers
Winsock1.RemoteHost = Text1.Text
'Der Port des Servers
Winsock1.RemotePort = Text2.Text
'Verbinde Winsock !
Winsock1.Connect
Command1.Enabled = False
End Sub<br>
Private Sub Command2_Click()
Text3.Text = Text3.Text & "Client: " & Text4.Text _
& vbCrLf
Text3.SelStart = Len(Text3.Text)
'Ein Befehl plus Text werden gesendet
Winsock1.SendData "msg" & Text4.Text
End Sub
Private Sub Timer1_Timer()
'Label1 gibt den Status wieder
Label1.Caption = Winsock1.State
End Sub
Private Sub Winsock1_Close()
Text4.Enabled = False
Command2.Enabled = False
Command1.Enabled = True
End Sub
Private Sub Winsock1_Connect()
Text4.Enabled = True
Command2.Enabled = True
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Result As String
'Die Variable result gibt die empfangenen Daten wieder;
'Entweder die variable Result muss als String dim. werden
'oder bei Winsock1.GetData Result muss hinten vbstring
'dazugeschrieben werden
Winsock1.GetData Result
Select Case Left(Result, 3) 'Befehlsauswertung
Case "msg" 'Chat Befehl
Text3.Text = Text3.Text & "Server: " & Mid(Result, _
4) & vbCrLf
Text3.SelStart = Len(Text3.Text)
End Select
End Sub
Orginal http://www.activevb.de/tutorials/tut_winsock_control/winsock_con.html
Projekt als Downloadhttp://www.activevb.de/tutorials/tut_winsock_control/downloads/winsock.zip
Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken
Weitere Beiträge aus dem Forum http://88.84.147.233/forum/index.php
Ähnliche Beiträge wie "Winsock Tutorial"
TUTORIAL: Veränderung von Augenfarben (von maggie) - maggie (Donnerstag 16.08.2007)
Tutorial charawechsel - Shino Aburame (Mittwoch 22.08.2007)
Tutorial Schneiderladen - bacocab (Mittwoch 05.01.2005)
Tutorial Glitzerschrift - ricky1 (Freitag 05.01.2007)
Ventile einstellen Tutorial - LazyJones (Freitag 27.04.2007)
C++ Tutorial - E-th4X[CREW] (Sonntag 30.07.2006)
[Videotutorial] Adboard Creating Tutorial by =>N4P4sT4< - Fastdog [ad] (Donnerstag 22.02.2007)
Metall-Avatar Tutorial (animiert) - oileee (Montag 04.06.2007)
Fraps + Tutorial - Nonchi_NPL (Mittwoch 18.07.2007)
TUTORIAL heute: wie man dateien runterlädt - Robin (Freitag 09.12.2005)