AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Delphi UDP Kommunikation Indy über Internet
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi UDP Kommunikation Indy über Internet

Ein Thema von AJ_Oldendorf · begonnen am 13. Mär 2024 · letzter Beitrag vom 15. Mär 2024
 
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
778 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Delphi UDP Kommunikation Indy über Internet

  Alt 14. Mär 2024, 01:39
Wenn dein Server wirklich von aussen via UDP erreichbar ist, dann ist es normalerweise problemlos dem Sender zu antworten.
(Wenn dem nicht so wäre, dann würden viele Mediastreams etc nicht funktionieren.)

Wenn der Sender sich hinter NAT Router "versteckt", dann merkt sich dieser Router die Verbindung Sender -> Server trotzdem, lässt umgekehrt Server -> Sender Kommunikation aber nur zeitlich beschränkt zu.

Was also funktioniert ist: Sender sendet Paket an Server, Server antwortet sofort/zeitnah.

Was oft nicht funktioniert ist: Server sendet Paket an Server, Server antwortet irgendwann später. Grund: Der Router auf Sender Seite hat den Kommunikationsweg gelöscht.
In solchen Fällen musst du wie KasOb schreibt sicherstellen, dass sich der Router des Senders die Verbindung Sender -> Server weiterhin merkt und so Pakete Server -> Sender zulässt (Schau dir die Socketoption SO_KEEPALIVE an, oder wie KasOb schreibt: Regelmässig Pakete hin- und her senden.)

Hier wurden noch STUN und hole punching erwähnt. Solche Technologien werden erst dann notwendig wenn sowohl Sender wie Server hinter NAT sind und auf keiner Seite eine Portweiterleitung eingerichtet ist. Ein Dritter vermittelt dann den direkten Aufbau zwischen den zwei Beteiligten, wenn's direkt nicht klappt erfolgt die Kommunikation über einen Dritten (TURN).

Wenn du einen Server betreibst, welcher über längere Zeit ab und zu Pakete mit dem Sender austauscht, dann würde ich TCP verwenden. Eine einmal aufgebaute Verbindung steht dann, bis du sie wieder abgebaut hast.

Nebenbei: Mit IPv6 lassen sich mittlerweile in meinem Netzwerk (Spiel) ca. 2/3 aller UserInnen direkt via tcp miteinander verbinden. Ein "harter Kern" verwendet IPv4/tcp und Portweiterleitung. Dieser Kern vermittelt bei Bedarf die IPv6 Verbindungen. UDP hole punching hatte ich auch eingebaut; aber dies führte bei einigen Wächtern zu Warnungen.
Michael Gasser
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 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