AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

max Länge TCPIP

Ein Thema von AJ_Oldendorf · begonnen am 5. Mär 2025 · letzter Beitrag vom 11. Mär 2025
 
AJ_Oldendorf

Registriert seit: 12. Jun 2009
411 Beiträge
 
Delphi 12 Athens
 
#1

max Länge TCPIP

  Alt 5. Mär 2025, 11:27
Moin zusammen,
ich habe eine funktionierende Windows Anwendung welche ein Indy TCPServer beinhaltet.
Dann habe ich eine Anwendung auf einem Android Gerät entwickelt mit einem Indy TCPClient.
Beide Anwendungen kommunizieren und können sich Daten hin und her schicken (auch über Internet->feste IP und Port vom Server).

Mir ging es jetzt um das Verständnis TCPIP.
Laut Wiki ist eine maximale Telegramlänge auf 1452 Byte beschränkt.
https://de.wikipedia.org/wiki/Transm...ntrol_Protocol
Ich habe jetzt erwartet, dass bei einem kleinen Test, die Telegramme ab 1452 Byte Länge, auf n-Anzahl Telegramme aufgeteilt wird. Dem ist aber nicht so.
Ich kann sogar 2000 Byte in einem Rutsch übertragen und beim Client kommt das in einem Telegramm an.

Im Client wird der Datenabruf wie folgt in einem extra Thread gemacht:
Execute Funktion:
Delphi-Quellcode:
while not Terminated do
begin
  TCPClient.IOHandler.CheckForDataOnSource(100);
  if not TCPClient.IOHandler.InputBufferIsEmpty then
  begin
    tmpInt := TCPClient.IOHandler.InputBuffer.Size;
    SetLength(content, 0);
    TCPClient.IOHandler.ReadBytes(content, tmpInt, False); //#$0d + #$0a immer noch am Ende

    tmpStr := 'In: ' + tmpInt.ToString + '->' + BytesToString(content);
    if tmpStr <> 'then
    begin
    if Assigned(OnThreadTCPReceive) then
      OnThreadTCPReceive(Self, tmpStr);
    end;
  end;
end;
Frage 1: Warum können 2000 Byte überhaupt übertragen werden in einem Telegramm? Das ganze geht auch mit 4000 Byte

Ich habe das ganze mal weitergetrieben und bis auf über 5000 Byte Länge gegangen und da bricht er mir manchmal die Telegramme auf 2 Empfangs-Telegramme auf, allerdings ist das erste Telegram nicht immer gleich lang. Es ist also nicht so, dass konstant nach 2000 Byte (fiktive Annahme) ein zweites Telegramm entsteht.

Frage 2: Woher weiß ich beim Empfang, welche Telegramme zusammengehören, wenn das ReceiveEvent mehrmals getriggert wird und immer an unterschiedlicher Stelle ein neues Telegramm erstellt wird?

PS: Ja ich verschicke mit Absicht Bytes und das soll auch so bleiben
  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 10:56 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 by Thomas Breitkreuz