Datenaustausch über UDP
-
Hallo Forum,
ich habe eine Client/Server-Anwendung, wo ich Daten über UDP austausche.
Dabei werden Bitmaps übertragen. Das Datenvolumen liegt etwa bei 3-4 Bitmaps/s.
Eine Bitmap kann dabei eine Größe von ca. 20 - 120 KB haben.Solange Client und Server direkt (Krosslink) oder über einen Switch verbunden
sind, läuft die Kommunikation ohne Probleme. Sobald ich einen zweiten Switch
zwischenschalte, läuft der Client bei größerem Datenvolumen
(ab 64 KB pro Bitmap etwa) immer ins Timeout.Woran kann es liegen? Kommen die beiden Switches mit dem Datenvolumen
nicht mehr zurecht oder wie ist das?Client und Server fungieren in einem 100 MBit LAN.
Bin für jeden Hinweis dankbar.
Danke im Voraus.
-
ok, kennt einer vielleicht ein gutes Forum über Netzwerke / Kommunikation ?
-
Ich denke nicht dass es unbedingt an den Switches liegt. Evtl. an der MTU des Netzwerks.
Ich frage mich allerdings warum du die Bilder per UDP übeträgst. UDP ist ein verbindungsloses Protokoll. Wenn die Bilder mal nicht in einem Rutsch übertragen werden hast du keine Garantie dass sie in der richtigen Reihenfolge ankommen und können also nicht mehr richtig zusammengesetzt werden. Mal abgesehen davon dass du keine Garantie hast, dass die Pakete überhaupt ankommen.
-
Es ist nicht kritisch, wenn ein Teil eines Bildes mal verloren geht, dann wird ein Bild eben verworfen. Es ist eine Fernsteuerungssoftware. UDP ist halt schneller als TCP und für diese Anwendung besser geeignet.
Ich habe es so realisiert:
Ist die Dateigröße <= 64 KB (maximale Datenmenge, die ein
UDP-Datagramm enthalten kann), so wird die Datei in einem Rutsch, also ein
Datagramm verschickt. Außerdem steht in dem Datagramm vorne ein von mir definierter Header, der die Bilddatei kennzeichnet und die Größe der bilddatei enthält.Ist die Datei größer 64 KB, wird diese in zwei aufgeteilt. Den ersten Teil erkenne ich am Header, der zweite Teil wird angehängt.
Die Reihenfolge könnte also nur dann nicht stimmen, wenn das Bild in mehrere UDP-Datagramme zerlegt wird.Und das fange ich ab, in dem ich den Header analysiere.