[VB.NET]TCP/Ip Tutorial

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [VB.NET]TCP/Ip Tutorial

      [COLOR="DarkOrange"]Dieses Tutorial kommt nicht von mir (am Ende sind die Credits) aber ich finde es einfach genial.



      "Erklärung vom Code des Servers"
      Zu aller erst einmal den unterschied zwischen diesem Server und einem Multi Server.
      Dieser Server kann nur einen Client nach dem anderen vornehmen. Wenn der Client sich eine Stunde mit dem Server Verbindet, kann der nächste Client erst danach angenommen werden. Damit wir auch dieses Problem lösen, werde ich weiter unten den Multi Server erklären.

      Zu aller erst müssen wir wieder die IO und die Socket Klasse importieren. Die Net Klasse, inder auch die Socket drinnen ist, importiere ich gleich mit, damit ich die IPendpoint benutzten kann:


      So jetzt werden wir mal alle unsere Variablen deklarieren:


      Jetzt mal langsam. Für Diejenigen denen das jetzt zu schnell mit den Variablen ging:

      ^Wieder zum empfangen und zum senden benötigen wir diese 3 Streams.


      ^Das ist unser Server der nichts anderes tut als eine Clientverbindung anzunehmen.

      Wichtig:Der TCPListener kann keine Daten Versenden oder Empfangen!!! Er nimmt nur ausstehende Verbidnungen an! Um jedoch Anworten zu senden oder zu empfangen, benötigen wir einen Client, denn dieser ist zum senden und emfangen da!


      Wie oben beschrieben benötigen wir diesen Client um den verbundenen Client zu Anworten und deren Streams auch zu empfangen.


      Diese Variable ist sowas wie die Addresse wo der der Server listenen soll. 'IPAddress.Any' bedeutet nichts anderes, dass er, egal welche ip, jede Verbidnung annimmt, welche auf dem Port 4000 eintrifft.


      In diesem Thread wird der ganze Server laufen. Wenn man den Server ohne Thread macht, dann bleibt die ganze Form bei diesem Code hängen 'Server.AcceptTCPClient'. Also nicht Vergessen, wenn man nicht will, dass seine Form sich Aufhängt.

      OK. Jetzt werden wir in dem Sub Event 'Form1_load' den Thread 'mainthread' eine Adresse geben und dann starten:


      So der Thread startet und führt den Sub 'mainserver' aus. Jetzt erst mal der ganze sub und danach die Erklärung:



      Mit diesem Code sagen wir dem Server auf welchem Port er Listenen soll. Wir übergeben ihm unsere IPendpoint, die ich oben schon erklärt haben.


      Der Server wird gestartet.


      So. Hier sieht man, dass der TCPListener nur die Verbindungen annimmt. Sobalt eine Verbindung eingeht, wird diese dem Client übergeben. Dieser ist dann zum senden und empfangen da. Wenn keine Verbindung eingeht, wartet das programm genau hier, bis eine eingeht. Deshalb auch der Thread.


      Das müsste doch klar sein? Wieder zum senden/empfangen...


      Wozu die Schleife? Ganz einfach: Wenn der Server(Zur Rchtigkeit eigentlich jetzt Client) einen Stream empfangen und einen gesendet hat, sollte er doch wieder auf einen Stream warten. Wenn nicht, wird der Code nur einmal augeführt. Das kann wiederum nützlich sein, aber es kommt wie schon gesagt auf das jeweilige Projekt an.


      Ein Stream wird empfangen und wird mit einer Select case aufgewertet.


      Wenn der empfangene Stream "irgendwas" ist, wird "zu irgendwas eine anwort" zurüch gesendet. oder man kann auch erst einen Code ausfürhenlassen und dann das Egrebnis zurück senden,....
      Wichtig: Vergesst das .Flush nicht!!!


      Wenn man die Form schließt beendet sich auch der Server.




      "Erklärung des Codes vom Client"
      Wir brauchen zu aller erst einmal einen Client. Um diesen, benutzen zu können müssen wir ersteinmal die Sockets Klasse importieren. Damit wir auch die Streams benutzen können werden wir die IO Klasse gleich mit importieren:


      Wir erstellen jetzt einen TCP Client und nebenbei auch die Streams zum senden und zum empfangen der Daten:


      OK. Jetzt machen wir einen Sub indem der Client versucht eine Verbindung mit dem Server herzustellen. Wir nehmen mal die IP Addresse "192.168.111.17" und den Port 4000. Danach kommt der Code um zu schauen ob der Client sich erflogreich Verbinden konnte. Wenn ja, wird auf einen nächsten Sub verwiesen. Wenn nein, wird eine MSGBOX ausgeworfen:


      So jetzt wird der SUB Deklare_Streams() aufgerufen. Indem werden die Streams, die wir oben schon deklariert haben, auf den Client verwiesen, damit wir Daten senden und empfangen können:


      Jetzt machen wir noch 2 Subs. Einer zum senden der Daten und einen zum Empfangen. Diese bräuchte man nicht unbedingt, da man den Code auch direkt in den Main Sub schreiben könnte. Aber es ist Übersichtlicher:


      Jetzt sind wir schon fast am Ende. Jeder kann jetzt daten senden oder empfangen in einer beliebigen Reinfolge. Ich nehmen jetzt 1 mal senden und 1 mal empfangen. Diese werden in dem Button1_click Sub stehen. Also wenn Button1 angeklickt wird, wird ein Stream gesendet und eine Empfangen.


      Und ganz zum Schluss wenn man die Verbindung trennen will:


      [COLOR="Red"]Ich habe extra Bilder gemacht damit ihr nicht einfach alles kopiert sondern was lernt!![/COLOR]

      Credits:
      Malischh - für das Tutorial
      Mono - für die Bilder [/COLOR]
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )