TCP Verbindung zwischen Programm und Webseite

  • VB.NET
  • .NET (FX) 3.0–3.5

    TCP Verbindung zwischen Programm und Webseite

    Guten Abend,
    ich bastel inzwischen seid 3 Stunden an einer Möglichkeit Daten(Informationen) zwischen einem vb Programm und der Webseite zuteilen. Geplant ist ein Echtzeit Datenaustausch.

    Dadurch, dass ich mich bis dato nicht wirklich mit Sockets auseinander gesetzt habe, ist es wie ein Bahnhof für mich.
    Jedoch kann ich schon paar Ergebnisse Vorweisen.

    Fehlermeldung

    Quellcode

    1. Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 5.230.142.92:10000

    Anmerkung: Die IP 5.230.142.92 ist die ServerIP


    PHP Teil
    Spoiler anzeigen

    PHP-Quellcode

    1. #!/usr/local/bin/php -q
    2. <?php
    3. error_reporting (E_ALL);
    4. /* Das Skript wartet auf hereinkommende Verbindungsanforderungen. */
    5. set_time_limit (0);
    6. /* Die implizite Ausgabe wird eingeschaltet, so dass man sieht,
    7. * was gesendet wurde. */
    8. ob_implicit_flush ();
    9. $address = '31.16.*.*'; // IP stimmt natürlich
    10. $port = 10000;
    11. if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
    12. echo "socket_create() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error()) . "\n";
    13. }
    14. if (socket_bind($sock, $address, $port) === false) {
    15. echo "socket_bind() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($sock)) . "\n";
    16. }
    17. if (socket_listen($sock, 5) === false) {
    18. echo "socket_listen() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($sock)) . "\n";
    19. }
    20. do {
    21. if (($msgsock = socket_accept($sock)) === false) {
    22. echo "socket_accept() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($sock)) . "\n";
    23. break;
    24. }
    25. /* Anweisungen senden. */
    26. $msg = "\nWillkommen auf dem PHP-Testserver. \n" .
    27. "Um zu beenden, geben Sie 'quit' ein. Um den Server herunterzufahren, geben Sie 'shutdown' ein.\n";
    28. socket_write($msgsock, $msg, strlen($msg));
    29. do {
    30. if (false === ($buf = socket_read ($msgsock, 2048, PHP_NORMAL_READ))) {
    31. echo "socket_read() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($msgsock)) . "\n";
    32. break 2;
    33. }
    34. if (!$buf = trim ($buf)) {
    35. continue;
    36. }
    37. if ($buf == 'quit') {
    38. break;
    39. }
    40. if ($buf == 'shutdown') {
    41. socket_close ($msgsock);
    42. break 2;
    43. }
    44. $talkback = "PHP: Sie haben '$buf' eingegeben.\n";
    45. socket_write ($msgsock, $talkback, strlen ($talkback));
    46. echo "$buf\n";
    47. } while (true);
    48. socket_close ($msgsock);
    49. } while (true);
    50. socket_close ($sock);
    51. ?>


    und

    VB
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Threading
    3. Imports System.IO
    4. Public Class Form1
    5. Dim listener As New TcpListener(10000)
    6. Dim client As New TcpClient
    7. Dim message As String = ""
    8. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    9. listener.Stop()
    10. End Sub
    11. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    12. Dim listthread As New Thread(New ThreadStart(AddressOf listening))
    13. listthread.Start()
    14. End Sub
    15. Private Sub listening()
    16. listener.Start()
    17. End Sub
    18. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    19. client = New TcpClient("5.230.142.92", 10000)
    20. Dim writer As New StreamWriter(client.GetStream())
    21. writer.Write(TextBox2.Text)
    22. writer.Flush()
    23. End Sub
    24. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    25. If listener.Pending = True Then
    26. message = ""
    27. client = listener.AcceptTcpClient()
    28. Dim reader As New StreamReader(client.GetStream())
    29. While reader.Peek > -1
    30. message = message + Convert.ToChar(reader.Read()).ToString
    31. End While
    32. TextBox3.Text = TextBox3.Text & message & vbCrLf
    33. Else
    34. End If
    35. End Sub
    36. End Class


    Außerdem noch anzumerken ist, wenn ich bei Putty "netstat -an" eingeben, erscheint auch der Port nicht und wenn ich mit dem Programm ein p2p Netzwerk aufbaue funktioniert alles bestens.
    Auch kann ich nicht über Telnet durch Putty kein Socket aufbauen.

    Hat jemand von euch eine Tipp oder eine Idee?

    Würde mich Freuen

    MFG Whitetiiger



    #Edit 25.03.2017

    in der Zwischenzeit habe ich herausgefunden, dass es nicht möglich ist ein Tunnel zwischen einer Webseite und einem Programm aufzubauen.
    Daher habe ich mich in der Zwischenzeit daran gemacht ein eigenen Server zuschreiben, um die Datenpakete zu verarbeiten und zu senden.

    Manchmal kommt die Antwort sogar von Alleine

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „whitetiiger“ ()