Daten schnell über Internet übertragen

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Daten schnell über Internet übertragen

    Hallo Zusammen,

    Beispiel Facebook: Ich schreibe im Chat mit jemanden... Wenn ich tippe sieht der andere das ich noch schreibe... Diese Abfrage funktioniert Sekundengenau!!

    Wie kann ich das mit Visual Basic umsetzen? Brauche eine genau so schnelle Methode einen kurzen String zu übertragen! Wie mache ich das am besten? Danke für die Hilfe :) :thumbsup:
    Du darfst Fragen :)
    Allerdings bin ich da noch ganz offen... Ich möchte einen String schnell und einfach übers Internet an ein anderes Programm von mir auf einem anderen Computer senden...
    Wenn ich mit TCP arbeite brauche ich aber eine ID des anderem und der Port muss auf dem Rooter freigegeben werden usw -.-
    Das darf alles nicht sein... Der andere User soll das Programm einfach NUR anmachen und dann soll er Informationen von mir empfangen können...
    Im Prinzip soll es ein Lehrer -> Schüler Verteiler System werden... Es muss aber aus einem bestimmten Grund Sekundengenau sein!!! Heisst Infos sollten auch im Sekundenabstand
    ohne größere Verzögerung versendet werden könne...

    Habe bis jetzt eine TXT datei genommen und diese über WebClient.UploadString beschrieben und auf der anderen Seite ausgelesen... Das ist aber zu langsam und überläd sich schnell -.-

    DrVisualBasic schrieb:

    Wenn ich mit TCP arbeite brauche ich aber eine ID des anderem und der Port muss auf dem Rooter freigegeben werden usw -.-
    Das darf alles nicht sein... Der andere User soll das Programm einfach NUR anmachen und dann soll er Informationen von mir empfangen können...


    Das ist auch mein größtes Problem..
    Ich bin sehr daran interessiert, dass dieses Thema gelöst werden kann, leider könnte ich dir auch nur das mit dem TCP Client+Server erklären, aber das hat ja wie du schon erwähntest diese ganzen Nachteile..
    Hm. ich habe mal etwas gelesen von einem TCP-Protokolierungscode der in etwa das macht was du/ihr wollt. Aber das Problem ist eben das man IP + Port + Firewall frei braucht. Ich informiere mich mal weiter und sage bescheid wenn ich weiß wie man das lösen kann.

    Mfg
    erstmal lol. Du startest das programm auf einem computer und auf einem anderen. dann soll sich das einfach verbinden? auf direktem weg wird das nicht funktionieren, woher soll das programm wissen womit es sich verbinden soll? da gibt es ja zig milliarden möglichkeiten.
    bei ICQ ist ja der server dazwischen der client mit client verbindet. Beide Clients wissen WO der server ist - soll heißen wenn du einen server hast der beiden clients bekannt ist kannst du das ganze einfach realisieren. alternativ muss die IP eingegeben werden

    DrVisualBasic schrieb:

    Ich möchte einen String schnell und einfach übers Internet an ein anderes Programm von mir auf einem anderen Computer senden...

    Du überträgst nicht den String, sondern sagst dem Server das du tippst, ggf. Event und der Server löst ein "Tippt" event bei den anderen clients aus.

    lg.
    lg.

    LucaWelker
    Danke schonmal für die Überlegungen... Bevor wir eine falsche Zielsetzung verfolgen... Mir geht es wirklich darum einen String zu versenden... Dieser sollte schnell auf einem anderem Pc landen... FTP ist Für diesen Zweck zu instabil und zu langsam... Der andere User soll die Daten allerdings ohne jegliche Einstellung etc erhalten können...
    @ erfinder
    ging das an mich? xD

    ist doch so, dass wenn er das "...ohne jegliche Einstellung..", worunter ich die eingabe einer IP verstehe das ganze über einen festen server machen muss der in beiden programmen fest gspeichert ist.
    alternativ könnte er dann noch alle IPs durchgehen bis eine sich verbinden lässt, im eigenem netzwerk würde das wahrscheinlich funsen aber da steht ja "über Internet", also soll das theoretisch ja auch von mir zu dir laufen
    Das Server/Client Problem ist ja nicht das worum es ihm eigentlich geht, das ist ja einfach zu lösen..

    Bspweise Meldet sich der "Empfänger-Client" beim Server & der Speichert dann die IP des "Empfänger-Clients".
    Der "Sender-Client" guckt dann auf dem Server nach der neusten IP & versucht sich zu verbinden.

    Was aber aber wissen möchte ist, wie er das Verbinden machen kann, ohne dass er einen Port öffnen muss, bzw noch extra Port-Forwarding betreiben muss. Es gibt doch Programme, die das ohne können, und er fragt sich, wie sie das tun..
    Auch der Loch Trick benötigt einen Server.
    Dieser Server benötigt dazu einen offenen Port.

    Existiert ein Vermittlungsserver, benötigen die Clients keine Einstellungen, da die Clients sich mit diesem Verbinden und der Server keine Verbindung zum Client aufbaut.
    Das ist meine Signatur und sie wird wunderbar sein!
    Im Grunde genommen funktioniert so was ungefähr so:

    Client 1 startet seinen Chat.
    Dieser verbindet sich mit dem Server und loggt sich ein.

    Client 2 startet seinen Chat.
    Dieser verbindet sich mit dem Server und loggt sich ein.

    Client 1 schickt eine Nachricht an den Server. Diese enthält bspw. Text und den Namen des Empfängers.
    Der Server schaut nun nach, ob der Empfänger online ist, und schickt ihm ggf. die Nachricht.

    Da nur der Server einen Port freigeben muss, kann sich jeder damit verbinden, ohne vorher an seinem Router rumzufummeln.

    Der Nachteil: Der Server, der die ganzen Clients verwaltet, muss immer online sein und wenn möglich eine fixe IP haben.
    Letzteres ließe sich gut mit einem dynamischen DNS lösen, jedoch wäre es schon ein wenig schwieriger, an einen Server zu kommen.
    Auch der Loch Trick benötigt einen Server.

    Joa, aber so wie ich das verstehe, könnte man, um die Verbindungsdaten auszutauschen auch ein ftp genutzt werden. Client 1 schickt seine Daten, Client 2 ruft sie ab. Und umgekehrt. Dann haben beide Rechner die Verbindungsdaten, die Verbindung ist offen und die computer kommunizieren direkt miteinander. Aber vllt hab ich auch zu schnell gelesen.^^
    FTP würde theoretisch funktionieren.
    Jedoch sollte man diese Idee lieber sehr schnell wieder verwerfen.
    FTP bedeutet File Transfer Protocol, und ist, wie der Name schon sagt, zum Austauschen von Dateien da.
    Für Chats, Spiele, etc. ist dieses Protokoll völlig ungeeignet, auch wenn es auf den ersten Blick manchmal ganz passend aussieht.

    Erstens ist es langsam. Zumindest für solche Zwecke. Du kannst schon mal ein paar Sekunden auf deine Daten warten.
    Zweitens ist es unsicher. Du brauchst einen FTP-Server, auf den du deine Daten hochlädst. In deinem Programm müssen die Zugangsdaten zu diesem stehen. Die kann jeder ganz einfach auslesen.
    Drittens ist es unnötig kompliziert, da es mit anderen Protokollen viel einfacher geht.
    Ja, ist schon klar. Der langsame Teil ist doch nur der, wo die rechner sich die verbindungsdaten holen? Das wäre doch nur einmalig beim start? Müsste evtl ein Script laufen, das dann prüft mit welchem Port gesendet wurde. Diese Info holt dann der andere Rechner. Hab aber keine Lust den Artikel nochmal zu lesen, plane nichts in der Richtung und kenn mich net wirklich aus. Ist bloß meine Theorie.

    //
    Die Sicherheitsfragen sind doch hierbei Nebensache, es geht nach meinem Verständnis nicht um ein Schüler / Lehrer, sonderm um Schüler / Schüler = Vorsagen und muss aus diesem Grund Sekundengenau sein :P

    Aber ich kann mich auch irren.

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

    Ich verstehe immer noch nicht, warum eine Serverlösung nicht in Frage kommt.
    Ein Server hört auf Port 80. Der ist von überall aus anzusprechen.
    Verschiedene Clients verbinden sich darauf und alles was einer schickt, wird an alle anderen weitergesendet.
    So eine Art Gruppen-Chat.

    Wenn man auf aufwendigen Protokoll-Overhead verzichtet, ist das verdammt schnell.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    petaod: wenn du einen Webserver meinst ja, aber ein Port kann immer nur von einem Prozess belegt werden ( läuft ein Webserver drauf Apache, nginx, iis wirds nicht funktionieren ) und ein Webserver ist bekanntlich kein Server auf dem man noch mehr Server laufen lassen kann.
    es gibt hier ein Tutorial zu einem MultiServer ( [VB.NET] Multiserver (TCP) ) mit dem man das realisieren KANN.

    Wenn der Server auf deinem Rechner läuft brauchst du auch noch eine dynDNS-Adresse ( z.B. dyndns.org ) und eine Portfreigabe im Router ( nur Server brauchen Freigaben, Clienten nicht )
    Sobald du es geschafft hast den Server zu schreiben, eine dynDNS-Adresse, die Portfreigabe eingerichtet und den Clienten geschrieben hast, bist du an deinem Ziel.

    Ich wünsche dir Viel Glück und Erfolg!