Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: datei versand client->server->client

  Alt 16. Jan 2007, 15:13
Um es nochmal zu sagen, das hat nichts mit Indy oder Sockets oder was auch immer zu tun, der Grund dass Du einen Port benötigst liegt im TCP/IP bzw. UPD/IP, was die sogenannten Internetprotokolle sind.
Diese funktionieren so, dass zwei Kommunikationspartner eine eindeutige Adresse haben und über diese miteinander kommunizieren können. Eine Adresse besteht dabei aus der IP-Adresse (die Maschine die erreicht werden soll) und dem Port (der Dienst der angesprochen werden soll). Das ist wichtig, da auf einem Server natürlich mehr als ein Dienst laufen kann. So findest Du i.d.R. einen Webserver (also der Dienst, den z.B. Apache anbietet) auf Port 80. Handelt es sich um einen Linux-Rechner, wirst du mit einer gewissen Wahrscheinlichkeit auch einen SSH-Dienst auf Port 20 (oder war SSH 22?, kann man eh umlegen), finden. Wenn Du jetzt also eine Webseite abrufen möchtest, richtest Du zwar die Anfrage an den selben Rechner, aber möchtest sicherlich nicht beim SSH-Dienst landen (ok, genauer gesagt wird der Admin des Servers das kaum wollen).
Das HTTP (ab 1.1) hier nochmal auf einem Port zwischen den abgerufenen URLs unterscheiden und somit mehr als eine Seite auf dem gleichen Port ausgeben kann ist dann noch eine andere Sache.

Möchtest Du einen Dienst nutzen oder anbieten (Client bzw. Server), dann muss ein Port dafür geöffnet werden. Da führt bei diesen Protokollen (afaik) nichts herum. Wenn Du also nicht über das Internet kommunizieren möchtest, so wirst Du vielleicht ein anderes Protokoll finden, dass hier ohne Port auskommt, aber ob so ein Protokoll durch den Router kommt ist dann wieder eine andere Sache.
Deswegen solltest Du einfach den Port durch den Benutzer wählen lassen können, ICQ, MSN-Messenger, Torrent-Clients und auch der gute Webbrowser müssen auf die gleiche Art und Weise am Router vorbei. Das größte Problem hier ist, dass Du eben aktiv einen Port forwarden musst, wenn Du hier Ereignisorientiert die Verbindung auf- und abbaust. Ein solcher Port (an den dann Daten geschickt werden, die nicht angefragt wurden) wird dann immer an einen festen Rechner im Netz und hier auf einen festen Port (an einen festen Dienst) weitergereicht. Das ist z.B. auch nötig um eine Skype Verbindung von außen mit einem Rechner hinter einem Router herzustellen.
Alternativ dazu kann man (wie bereits gesagt) eine Verbindung zum Server einfach offen halten und hier Antworten versenden. Das löst zwar das Problem mit dem Port-Forwarding, aber nicht das generelle Problem, dass eben auch hier ein Port geöffnet werden muss.
  Mit Zitat antworten Zitat