Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Chat über beliebige Ports (https://www.delphipraxis.net/8682-chat-ueber-beliebige-ports.html)

Chris1986 10. Sep 2003 10:27


Chat über beliebige Ports
 
Morgen,
wir (2) sind dabei ein komplexes Chat-System zu schreiben. Die Kommunikation über Sockets steht auch schon, trotzdem stelle ich mir seit einigen Tagen eine Frage. Wie ist es möglich, dass der Benutzer des Clients den Port, den er nutzen will, frei wählt und sich über diesen zum Server verbindet?
Zur Zeit sind bei uns die Ports noch festgelegt. Beide Programme nutzen die Ports 6711, 6712 und 6713. Aber wenn jemand nur bestimmte Ports freigegeben hat, wie kann er dann den Server erreichen?
Und was muss ich tun damit sich die richtigen Sockets miteinander verbinden und es kein großes Durcheinander gibt?? Irgendwie muss es ja gehen, denn bei AIM, ICQ ect. gehts doch auch, oder? Ist es vielleicht möglich, die IE-Proxy Einstellungen zu nutzen?

Viele Fragen,
ich hoffe ihr versteht mich :lol:

Ps.: Falls es wichtig ist, wir haben Delphi 5 und die Indy9-Kompienten zur Verfügung.

Gruß
Christian

Snoop007 10. Sep 2003 10:46

Re: Chat über beliebige Ports
 
naja frei wählen ...
angenommen der server kann auf mehreren port's lauschen,
dann kann sich der client einen port "aussuchen"

bietet der server diese möglichkeit nicht, so kann der client auch nur einen port ansprechen

oder aber, beide vereinbaren einen port, d.h. der client gibt den port vor und der sever wartet auf diesem port
das setzt aber einen "zwischen server" vorraus und es ist ungeeignet wenn mehrere clients sich einen port aussuchen, logisch ;)

negaH 10. Sep 2003 10:51

Re: Chat über beliebige Ports
 
Der Client wählt einen Zufallsport und verbindet mit dem Server und dessen festen Port. Nun steht eine Socketverbindung in der beide, also der Client und auch der Server Daten in beide Richtungen versenden können. Wenn das Chat-Kommunikations-Protokoll sauber und clever entwicklet wurde, dann kann man über diese eine Verbindung Daten senden und auch lesen in beide Richtungen.

Aus Sicht des Servers ist es egal welchen Port der Client benutzt, denn die Verbindung besteht auch ohne dieses Wissen.
Auf ServerSite müssen hauptsächlich nur die FireWalls so konfiguriert werden das sie den Server-Port zugreifbar lassen. Auf Clientsite müssen haupsächlich die Proxies, aber nicht die FireWalls berücksichtigt werden. Bei einem Chat ist es aber üblich das der Chat-Server nur die Verbindungen von einem Client zu anderen Clients ermöglicht. Dazu verwaltet der Server eine Tabelle aller angemeldeten Clients per IP + Port. Diese Informationen werden dann benutzt damit einer der Clients sich mit anderen Clients verbinden kann.

Gruß Hagen

Chris1986 10. Sep 2003 10:52

Re: Chat über beliebige Ports
 
hm. Aber wie funktioniert dann ICQ. Denn der Client nutzt doch die Proxy-Einstellungen vom Internet Explorer

Gruß
Christian

Chris1986 10. Sep 2003 10:57

Re: Chat über beliebige Ports
 
Zitat:

Der Client wählt einen Zufallsport und verbindet mit dem Server und dessen festen Port
Das ist ja mein Problem. Was mache ich denn, wenn der Client den Server nicht ansprechen kann, weil die ausgehende Verbundung des Clients den festen Port des Servers nicht zulässt?

Gruß
Christian

negaH 10. Sep 2003 11:10

Re: Chat über beliebige Ports
 
Zitat:

hm. Aber wie funktioniert dann ICQ. Denn der Client nutzt doch die Proxy-Einstellungen vom Internet Explorer
Richtig. Ist ein Proxy aktiv so muß der Verbindungsaufbau über den Socks-Proxy des Proxy-Servers erfolgen. Man nimmt einen Zufallsport und vernindet mit dem bekannten und feststehenden Port+IP des Proxyservers. Bei Socks4/5 wird dazu ein kleiner Datenblock gesendet indem gespeichert wird mit welchem Ziel -> IP+Port zu verbinden ist.
Dieses Vorgehen ist normalerweise nur auf Clientsite notwendig.


Zitat:

Das ist ja mein Problem. Was mache ich denn, wenn der Client den Server nicht ansprechen kann, weil die ausgehende Verbundung des Clients den festen Port des Servers nicht zulässt?
Hm, hast du eine FireWall laufen die ausgehende verbindungen blockiert ?
Das muß dann umkonfiguriert werden, normal ist das aber nicht unbedingt. Mal abgesehen von Firmennetzen die verhindern wollen das die Angestellten surfen können bzw. die nur über HTTP arbeiten dürfen.

Ich vermute aber mal das du einen Proxy meinst und eben nicht über diesen Proxy versuchst zu verbinden. In diesem Moment erscheint es so als würde dein Verbindungsaufbau blockiert.

Gruß Hagen

negaH 10. Sep 2003 11:14

Re: Chat über beliebige Ports
 
Als flexibles Chatsystem, das möglichst ohne Probleme durch alle Poxies/Fiewalls durchkommen will, bleibt nur HTTP Port 80 übrig. Nur dieser Port ist mit der höchsten Wahrscheinlichkeit durchlässig.

Anbieten tut sich da das SOAP Protokoll per ISAPI.DLL o.ä. In einer solchen Konfiguration wäre der Chat fast immer lauffähig. Allerdings SOAP ist langsam, anfällig, noch nicht so weit verbreitet und es lassen sich nicht mehr alle Möglichkeiten ausschöpfen.

Gruß Hagen

Chris1986 10. Sep 2003 11:16

Re: Chat über beliebige Ports
 
Hi.
Eigentlich hatten wir bis jetzt keine Probleme, aber ein Freund von mir benutzt die Internetverbindungsfreigabe eines anderen PC's um ins Internet zu kommen und bei ihm funktioniert es nicht, ICQ läuft aber.

Hast du denn einen Code, der das möglich macht?

Gruß
Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz