Entwickler-Ecke

Internet / Netzwerk - Indy Instant Messenger Portproblem


pigfacejoe - Fr 18.05.07 16:32
Titel: Indy Instant Messenger Portproblem
Hallo alle zusammen!

Ich habe in Delphi mit Hilfe der indy Komponenten einen Instant Messenger programmiert, mit dem ich mich schon einloggen kann und immer die aktuelle IP ermitteln kann. Wenn ich allerdings mit jemandem, der das Programm hat, chatten will, muss dieser erst den Port freigeben und das ist ja (gerade bei älteren Routern) etwas aufwendig.
Jetzt frage ich mich , wie ICQ, MSN usw. es schafft, ohne Portfreigabe trotzdem Nachrichten zu versenden. Gibts da irgendeinen besonderen Port oder so??^^
Mein Programm hat jeweils einen IdTCPClient und einen IDTcpServer, über Port 5300.
Wenn ihr vlt. wisst, wie ich die Portfreigabe umgehen könnte, wäre ich euch sehr dankbar.

Schönen Gruss

Pigface Joe


UGrohne - Fr 18.05.07 16:40

Ausgehende Verbindungen werden normalerweise immer weitergeleitet, das ist also kein Problem. ICQ, MSN & Co. haben einen zentralen Server, über den die Messages dann weitergeleitet werden, wenn keine direkte Verbindung aufgebaut werden kann. Das dürfte für Dich aber zu aufwändig sein ;)

Skype setzt noch ein anderes System ein, das sich glaub UDP Poisoning verwendet. Dabei werden Eigenheiten der Router ausgenutzt, sodass eingehende UDP-Pakete von außen weitergeleitet werden, ohne dass sie explizit geforwardet werden, weil sie als Teil einer Verbindung gesehen werden. Aber das dürfte auch zu aufwändig für Dich sein.

Zu guter Letzt gibt es noch UPnP, das viele Router unterstützen. Wenn es aktiviert ist, kann jeder Rechner/Applikation beim Router eine Forwarding automatisiert einrichten. Z.B. unterstützt Azureus UPnP. Auch zu aufwändig für Dich ;)

Als bleibt nur: Damit leben, oder wenn du sehr ehrgeizig bist, eine Möglichkeit davon nutzen :mrgreen:


pigfacejoe - Fr 18.05.07 16:48

Danke für die schnelle Antwort!

Kann ich auch nicht irgendwie bei der Installation Ports bzw. den einen Port freigeben? (Über Shell oder so?)


Wenn nicht , zu die 1. Möglichkeit mit dem Server:

Ich habe mir bei Funpic einen kostenlosen FTP Server erstellt mit 1,5 GB (oder mehr). Könnte ich dann einfach eine .txt Datei für jeden User anlegen und in diese datei dann mit IdFTP meine Nachrichten reinschreiben? Der Empfänger lädt sich dann jede 10tel Sekunde (timer) diese datei runter.
Könnte das dann so klappen?-Wäre ja eig. ziemlich simpel.


alias5000 - Fr 18.05.07 17:52

Ne, also abgesehen, dass du von der Geschwindigkeit sicher nicht alle 0,1 Sekunden da was runterladen könntest, wenn viele Benutzer da online sind, kannst du die Performance glaub ich ziemlich gut vergessen.

Hinter ICQ/MSN,.. steht überall direkt ein Programm mit einem Server (TCP/UDP basierte Protokolle). Also bei dir z.B. dann ein Programm, das allein als TCP-Server fungiert.

Die dateigeschichte birgt auch in der Hinsicht die Gefahr, dass du deine Zugangsdaten zum Ftp freigeben müsstest, ein Verzeichnis mit CHMOD777 austatten müsstest, oder ein php Skript aufsetzen müsstest, was das ganze verwaltet.
Die ersten beiden Möglichkeiten sind extrem unsicher, die letzte extrem unperformant.

Also die drei Möglichkeiten, die UGrohne genannt hat

Gruß
alias5000


pigfacejoe - Fr 18.05.07 23:41

Noch eine kleine Frage: Im Netzwerk klappt mien Chat ohne Freigabe über Port 80, den kann ich aber nicht irgendwie als Port verwenden , wenn ich übers I-net sende,oder? ;-)


UGrohne - Sa 19.05.07 13:31

Klar, weil der Port bei Desktop Firewalls freigegeben ist. Übers Internet kannst Du den auch verwenden, solange der andere keinen WebServer auf seinem Rechner laufen hat, aber Du wirst genau dieselben Probleme bekommen, wie bei allen anderen Ports.


pigfacejoe - So 20.05.07 02:25

Naja, dann begrabe ich meinen Instant Messanger mal.. :cry:

Danke für eure Antworten!


sam3st - Di 05.06.07 16:31

das verstehe ich nicht... hast du nicht die möglichkeit irgendwo einen server laufen zu lassen? z.b. auf deinem rechner denn eigentlich bräuchten die clients doch keine serverkompo...

wenn du nur die clientkompos benutzt und die serverkompo auf einem rechner bei dem der port freigegeben ist solltest du keine probleme haben...