AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Indy UDP Client sendet manchmal doppelt

Indy UDP Client sendet manchmal doppelt

Ein Thema von Poolspieler · begonnen am 29. Mär 2012 · letzter Beitrag vom 29. Mär 2012
Antwort Antwort
Poolspieler

Registriert seit: 9. Aug 2004
145 Beiträge
 
Delphi XE3 Professional
 
#1

Indy UDP Client sendet manchmal doppelt

  Alt 29. Mär 2012, 11:44
Hallo,
auf manchen Laptops mit aktivierten LAN und aktivierten WLAN tritt folgendes auf:

Beispiel:
LAN-Adresse des Laptops: 192.168.1.10
WLAN-Adresse des Laptops: 172.20.1.10
Kommunikationspartner im LAN: 192.168.1.20

Vom Laptop wird per UDP-Client ein UDP-Paket an 192.168.1.20 geschickt. Normalerweise geht das Paket EINMAL raus. Die Source-Address (aufgezeichnet mit Wireshark) ist dabei die 192.168.1.10.

PROBLEM:
Manchmal (unter welchen Umständen weiß ich noch nicht) wird das Paket ZWEIMAL verschickt. Einmal mit Source-Adress 192.168.1.10 UND nocheinmal mit Source-Adress 172.20.1.10 --> Der Kommunikationsparter erhält beide Pakete und kommt mit dem Zweiten Paket nicht klar (hier werde ich auch noch nach einer robusteren Lösung suchen, das ist aber eine andere Baustelle...)

Kann mir jemand sagen, warum das Paket MANCHMAL zweimal raus geht? Ist das ein Windows-Problem (WinXP) oder doch ein Software-Problem (Delphi...)???

Viele Grüße,

Poolspieler
Andreas
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
4.833 Beiträge
 
Delphi XE Starter
 
#2

AW: Indy UDP Client sendet manchmal doppelt

  Alt 29. Mär 2012, 12:07
Hallo,

warum das manchmal auftritt - ist mir auch ein Rätsel.
.. aber kannst Du den UDP Client nicht fest an eine IP-Adresse binden?
.. oder das Routing so einrichten, dass die 192.168.xx.yy nicht über das 172er Netz erreichbar ist?

Nachtrag:
Haben beide Interfaces eine default-route?
Pro Rechner sollte meines Wissens immer nur eine existieren.

Grüße
Klaus
Klaus

Geändert von Klaus01 (29. Mär 2012 um 12:11 Uhr)
  Mit Zitat antworten Zitat
Poolspieler

Registriert seit: 9. Aug 2004
145 Beiträge
 
Delphi XE3 Professional
 
#3

AW: Indy UDP Client sendet manchmal doppelt

  Alt 29. Mär 2012, 12:51
Hallo Klaus,
vielen Dank für Deine Antwort!

Für das WLAN (ist über DHCP angebunden) ist ein Standardgateway und DNS-Servereintrag vorhanden.

Das LAN hat eine feste IP ohne Gateway und DNS.

Das mit dem "fest an eine IP-Adresse binden" könnte kompliziert werden, weil die Software auf vielen unterschiedlichen PCs/Laptops läuft und ich (nicht ohne weiteres...) feststellen kann, an welche(s) Interface/IP der Kommunikationspartner angeschlossen ist. Dies könnte zwar der User über einen Dialog einstellen, dann muss ich aber davon ausgehen, dass der User weiß was er tut. Und wir wissen ja, dass dies oft nicht der Fall ist... und dann klingelt das Telefon bei mir...


Die Routingeinstellungen sollten eigentlich gepasst haben. Der User hat unter den Netzwerkeinstellungen von WinXP nur die feste IP für LAN und DHCP für WLAN vergeben. Weitere Routingeinstellungen wurden nicht vorgenommen.


Ich bin gerade dabei, das Problem auf meinem Laptop zu reproduzieren - habe es aber (noch) nicht geschafft... Wie immer...

Viele Grüße,

Poolspieler
Andreas
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.511 Beiträge
 
Delphi 5 Professional
 
#4

AW: Indy UDP Client sendet manchmal doppelt

  Alt 29. Mär 2012, 13:29
Bei UDP ist das grundsätzlich so, dass das gleiche Pakete zweimal (oder noch öfter) empfangen werden kann.

Deshalb benötigt man innerhalb der UDP-Daten eine Paket-Zähler damit der Empfänger feststellen kann, dass er das Paket schon einmal bekommen hat.
Wenn die Datenpakete so durchnumeriert werden, dann kann der Empfänger feststellen, ob ein Paket verloren gegangen ist oder ob es doppelt angekommen ist.
Manchmal können sich die Pakete bei UDP sogar überholen.
Der Sender schickt P1,P2,P3 und der Empfänger bekommt P1,P3,P2.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.179 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Indy UDP Client sendet manchmal doppelt

  Alt 29. Mär 2012, 14:31
Oder vlt
P1,P3,P3, P1

(P2 fehlt, P3 und P1 kommen doppelt vor)
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Poolspieler

Registriert seit: 9. Aug 2004
145 Beiträge
 
Delphi XE3 Professional
 
#6

AW: Indy UDP Client sendet manchmal doppelt

  Alt 29. Mär 2012, 15:31
Hallo zusammen,
vielen Dank für Eure Antworten!

Die Risiken eines nicht verbindungsorientierten Protokolls sind mir schon bewußt.

Das Pakete nicht in der Reihenfolge ankommen, in der sie gesendet wurden, sollte (davon ging ich bisher aus...) NUR dann auftreten können, wenn sich Router (oder "intelligente" Layer3-Switches) zwischen den Kommunikationspartnern befinden.
Dies trifft in meinem Fall aber nicht zu.


Mein Problem:
Das Delphi-Programm (bzw. der Windows-Rechner) schickt ein Paket, auf dem LAN-Netz mit der Source-Adresse des WLAN-Netzes raus --> und das darf/kann doch nicht sein. Der Teilnehmer im LAN-Netz kann unmöglich die Antwort an das WLAN-Netz schicken (er hat ja kein Gateway und ist mit WLAN nicht verbunden...)
Ich bin etwas Ratlos...


Gruß,

Poolspieler
Andreas
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.511 Beiträge
 
Delphi 5 Professional
 
#7

AW: Indy UDP Client sendet manchmal doppelt

  Alt 29. Mär 2012, 17:07
Die Risiken eines nicht verbindungsorientierten Protokolls sind mir schon bewußt.
Trotzdem versuchst immer noch auf Netzwerk- / Routungsebene einen Fehler zu finden.
Denk' einfach nicht darüber nach und akzeptiere die Eigenschaften von UDP.

Wenn ein Notebook sowohl per Ethernet als auch per WLAN mit einem LAN verbunden ist, dann gibt es 2 aktive Netzwerkadapter und damit auch zwei Wege über den jedes Ziel im LAN erreicht werden kann.
Andreas
  Mit Zitat antworten Zitat
Poolspieler

Registriert seit: 9. Aug 2004
145 Beiträge
 
Delphi XE3 Professional
 
#8

AW: Indy UDP Client sendet manchmal doppelt

  Alt 29. Mär 2012, 17:22
Wenn ein Notebook sowohl per Ethernet als auch per WLAN mit einem LAN verbunden ist, dann gibt es 2 aktive Netzwerkadapter und damit auch zwei Wege über den jedes Ziel im LAN erreicht werden kann.
Das ist schon richtig. Nur (eigentlich) darf/sollte auf dem LAN kein Paket mit der Source-IP des WLAN verschickt werden. Umso genauer ich darüber nachdenke, umso mehr glaube ich an einen BUG in Windows - oder im Treiber der Netzwerkkarte.
Soweit ich dies jetzt überblicken kann, ist es mir NICHT möglich:
1. Den Fehler auf meiner Hardware zu reproduzieren
2. Für Abhilfe auf Windowsseite zu sorgen. --> Ich werde im Kommunikationspartner (ein Embedded-System) wohl oder übel das Subnet der Source-IP mit dem Subnet des Embedded-Systems vergleichen müssen. NUR wenn diese identisch sind, wird eine Antwort auf diese Anfrage gesendet (bzw. diese Anfrage überhaupt ausgewertet...)

Vielen Dank für Euere Anregungen!
Andreas
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2014 by Daniel R. Wolf