Chat ohne Portfreigabe

  • VB.NET
  • .NET (FX) 4.0

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von WeLoveBurgers.

    J.Herbrich schrieb:

    Ja, aber euch ist schon klar das SingleR eine ASP.NET Technologie ist, was so viel bedeutet wie ihr braucht einen Webspace für sowas der ASP.NET in der NET Framework Version 4.5 ...


    Und dir ist hoffentlich klar das du da kompletten Mist erzählst.

    Tu mir mal bitte den gefallen und erkläre mir mal bitte wie das performant mit PHP funktionieren soll ?

    Der Client muss den Server ja ständig pollen um zu erfragen ob eine neue Nachricht vorhanden ist. Das ist mehr als bullshit.

    Dann kann er auch gleich zur FTP Methode greifen. Warum nutzt man nicht einfach Technologien die auf den Anwendungsfall passen, statt irgendwelche Technologien zu empfehlen die in keinster Weise zum besagten Anwendungsfall passen .
    Dass das Mist ist weiß ich, aber ich weis nicht ob der TE geld für einen Windows Server iwo in RZ bei einen hoster ausgeben will und Webspaces die PHP haben giebt es wie samt am mehr. Deswegen habe ich für den TE einen Weg gesucht der ohne große mehrkosten zu Realisieren ist.

    Ich selbst benutze TCP-Server für sowas, und ich meine dazu giebt es ja genug beispiele wie ich einen TCP-Server Programmiere der mehrere Verbindungen handhaben kann. also bitte. Und beim Protokoll ist ja bekantlich die Kreativität eines jeden Programmiers Frei. Ich serialisiere Klassen zu JSON umd schicke das (als Protokol) durch den Stream.

    LG, J. Herbrich
    Hi
    generell ist die direkte Tcp-Verbindung mit dem Server als Vermittler wohl die am einfachsten realisierbare und zugleich noch sinnvolle Version.

    Eine direkte Verbindung ist über Udp hole punching realisierbar. Einfach mal danach suchen, da wirst du sicher fündig. Die jeweiligen IP-Endpunkte müssen aber dennoch über einen Server mitgeteilt werden.
    Generell funktioniert das Prinzip so, dass beide eine (vorzugsweise) Tcp-Verbindung zum Server öffnen, der die Vermittler-Rolle übernimmt, d.h. Stati (Online, Offline, usw., falls gewünscht zumindest) der Clients mitteilt und die IP-Adressen und Ports an zugehörige Clients übermittelt, sobald eine Verbindung geöffnet wird, etc. Der Port wird auf den beiden Clients geöffnet. Es ist zu beachten, dass zwei freie Ports für die Kommunikation benötigt werden (beachte, dass es einige reservierte Ports gibt). Die Verwaltung erfolgt über Sockets (siehe System.Net.Sockets.Socket), die von beiden Clients geöffnet werden. Auf diesen Sockets kann anschließend eine Übertragung stattfinden (siehe auch System.IO.Stream). Hierbei dient ein geöffneter Socket als Output, der andere als Input. Das Problem ist ja, dass die Verbindung geblockt wird, wenn sie versucht, unauthorisiert Daten an einen Port zu übertragen. Umgehen kann man das eben, indem nicht von außen, sondern von innen heraus eine Verbindung geöffnet wird. Auf diesem Kanal können dann eben Daten empfangen werden (d.h. das ist der Input-Kanal). Der kann aber nicht als Output-Kanal fungieren, außer die Input-Ports der beiden Clients stimmen überein, denn der andere Client blockt ja dann die Daten. Folglich wird ein Kanal mit einem weiteren Port, der als Output-Kanal fungiert, geöffnet. Der Zielport ist genau der Input-Port des jeweils anderen Clients (ergo ist der Input-Port der Output-Port des Anderen und der Output-Port des einen der Input-Port des Anderen).
    Die vom Input-Socket ungenutzte Write-Methode (und die vom Output-Socket ungenutzte Read-Methode wohl nicht? Da bin ich mir gerade nicht sicher, kann ich mir aber fast nicht vorstellen) sollten ebenfalls aufgerufen werden, da es sonst zu Timeouts kommen kann.
    Beachte zudem, dass Udp keine Garantie dafür übernimmt, dass einzelne Datenpackete tatsächlich angekommen sind; Tcp sorgt dafür schon.

    Viele Grüße
    ~blaze~

    PS: Es heißt "Sand am Meer", nicht "samt am mehr". Das sind quantitativ durchaus beachtliche Unterschiede, @J.Herbrich .

    J.Herbrich schrieb:

    Dass das Mist ist weiß ich ...


    Einsicht ist der erste Weg zu Besserung.


    J.Herbrich schrieb:

    ... aber ich weis nicht ob der TE geld für einen Windows Server iwo in RZ bei einen hoster ausgeben will ...


    Schon wieder Mist. Du landest ja einen Volltreffer nach dem anderen. Azure bietet 5 Kostenlose Webseiten für jeden an. Für das Lokale Hosting bietet sich die Self Host Methode an.

    J.Herbrich schrieb:

    Webspaces die PHP haben giebt es wie samt am mehr. ...


    *Sand *Meer

    PPR-Dev schrieb:

    Keine Freigebe aufgrund von Beschränkungen oder hat der Router diese Funktion nicht?

    Da Unitymedia wie auch andere Provider bemerkt haben, dass V4-Adressen knapp sind, kommen Neukunden meist in einen Dual-Stack-Light-Betrieb. Dual-Stack selbst bedeutet, dass dein Endpunkt sowohl eine V4 als auch eine V6-Adresse vom Provider bekommt. Das "-Light" dahinter heißt aber, dass der Provider eine V4-Adresse quasi an mehrere Kunden vergibt. Dadurch ist es nicht möglich, gescheites Port-Forwarding über V4 einzurichten, das würde nur mit V6 gehen, weil bei DSLight nur die V6-Adresse einzigartig ist.
    Das Resultat davon ist, dass du zu Hause zwar selbst einen TS-Server (oder irgendwas anderes) hosten kannst, aber es rein technisch nur möglich ist, dass sich Leute mit dir verbinden, die auch V6 sprechen (natürlich gibt es auch hier schon diverse Lösungen über Tunneling). V6 ist schon "seit Jahren" in der Einführung. Leider sprechen es immer noch nicht mal ansatzweise die Hälfte der Internetnutzer.

    Deshalb sollte man beim Internetvertrag darauf achten, wie der Provider das handlet. DSLight (nicht verwechseln mit DSL) ist für Nerds prinzipiell mist, weil man dann genau vor solchen Problemen steht und ohne zusätzliche Technik nicht drum rum kommt.
    Rel:
    elektronik-kompendium.de/sites/net/1904041.htm

    Die Lösung von blaze würde vermutlich klappen. Ein UDP-Hole-Punching könnte man so machen:
    stackoverflow.com/q/9140450/785210
    Von meinem iPhone gesendet
    Hallo,

    Azure braucht doch die Kredit Karte oder nicht (mehr)? Ok, falls nein dann ist ASP.NET SingleR eine gute lösung.

    Nächste Frage: Wieso rede ich mist, kann auch sein das es andere gründe hat wieso man nicht an einen Windows Server oder ASP.NET Webspace kommt.

    So, und zum selbst hosten wurde da ja auch schon alles gesagt. Das erfordert ja exakt genau das was der TE nicht will. Eine Portweiterleitung.

    LG, J. Herbrich
    Ftp-> meh, hab ich dir in 2 sekunden decompiled und daten ausgelesen
    nimm lieber einen free hoster mit mysql datenbank und php support, schreib dir ein kleines php script und dann hast du ein schönes programm(eine message dauert ca 0.1 sekunden oder weniger?) :D
    Wer Rechtschreibfehler findet darf sie behalten :)