![]() |
TCP Connection - ACK der Gegenseite abwarten
Hallo,
kennt jemand eine Möglichkeit, bei einer nonblocking TCP-Verbindung zu bestimmen, welche Pakete von der Gegenseite ge'akt' wurden zur Not würde auch reichen :: "alle Packete ge'ACK't" --> nichts mehr offen und das ohne die Verbindung zu schliessen ich will wissen, wann genau der Server ein bestimmtes Datenfragment/Kommando von meinem Client definitiv erhalten hat ich hab leider keine Möglichkeit ein externes Programm zu nutzen wie Wireshark o.ä.; d.h. die Erkennung muss direkt in meinem Client erfolgen wenn ich die Ack-Nummer der Gegensete hab, bräuchte ich "nur" noch die Zuordnung der packetnummer zu meinen Send Calls Danke |
AW: TCP Connection - ACK der Gegenseite abwarten
Zitat:
Ich könnte falsch liegen, aber wird dazu Zugriff auf Raw Sockets benötigt? Die sind durch einen nicht entfernbaren Hotfix ab ![]() |
AW: TCP Connection - ACK der Gegenseite abwarten
Zitat:
Vielleicht hilft dir ja die Overbyte "Internet Component Suite" (ICS) da weiter. Die ist komplett non-blocking und da sind etliche Beispiele mit bei. |
AW: TCP Connection - ACK der Gegenseite abwarten
Hi,
@mjustin Winsock ist primär gefragt ja, mit RAW müsste es gehen - ist aber mit Kanonen auf Spatzen - da müsste ich ja das ganze TCP selbst erfinden @nuclearping ich will wissen, WANN eine Bytesequence beim Server angekommen ist - nicht OB ICS hilft nicht wirklich hier noch ein Link, um das Problem zu verdeutlichen ![]() |
AW: TCP Connection - ACK der Gegenseite abwarten
Hallo,
ACKs/NACKs werden auf der TCP Schicht behandelt. Wenn Du auf diese zugreifen willst kommst Du um ein RawSocket nicht herum. Ein TCP Stack lässt Dir nur die Möglichkeit Daten in das TCP Packet zu stecken. Wie das dann auf dem Transport gehandhabt wird bleibt dem User des Stack verborgen. Grüße Klaus |
AW: TCP Connection - ACK der Gegenseite abwarten
Benötigst du zwingend non-blocking Sockets? Die Verwendung der blocking Variante dürfte am Einfachsten die Funktionalität ermöglichen, die du benötigst.
|
AW: TCP Connection - ACK der Gegenseite abwarten
wenn Du so fragst -> ich müsste das ganze Framwork umschreiben
deshalb frag ich vorher lieber nach : wie genau kann das mit blocking gehen und ist das gesicherte Erkenntnis oder nur Vermutung weil MS sagt : The successful completion of a send function does not indicate that the data was successfully delivered and received to the recipient. This function only indicates the data was successfully sent. ![]() mfg |
AW: TCP Connection - ACK der Gegenseite abwarten
So richtig sichergehen kannst du nur mit Bestätigungen auf Anwendungsebene.
Denn was nützt es dir, wenn TCP bestätigt, aber die Anwendung nicht genug Speicher hat, um die Nachricht zu verarbeiten. Ich glaube kaum, dass du was finden wirst, das ohne Treiber bzw. RAW-Sockets auskommt. Also entweder TCP selbst implementieren (~> bestehende Implementierung ändern) oder den Datenstrom abhören (WinCap). Da klingt Protokoll auf Anwendungsebene ändern gar nicht mehr so kompliziert, oder? :mrgreen: Im "schlimmsten" Fall ist TCP gar nicht im System implementiert, sondern läuft auf der ![]() |
AW: TCP Connection - ACK der Gegenseite abwarten
Kannst du deine Anforderungen noch etwas konkretisieren? Musst genau wissen, ob ein Paket angekommen UND korrekt verarbeitet wurde, oder reicht es evtl. das du dir sicher sein kannst, dass Paket A gesendet wurde bevor du Paket B losschickst? Im Normalfall gehe ich davon aus, dass mein blocking Request nach Funktionsaustritt korrekt behandelt bzw. zumindest korrekt gesendet wurde.
|
AW: TCP Connection - ACK der Gegenseite abwarten
@Zacherl
es geht mehr oder weniger darum, Timingprobleme zu erkennen / fixen sobald ich das Ack vom Server hab, ist jede weitere Verzögerung sein Problem ich muss nur nachweisen, ob/wann der Server das Packet bekommen hat und dem kommt imho das Ack am Nächsten dabei iss mir Wurscht, ob die ServerNIC das Ack bildet oder die Treibersoftware @BUG jaja neenee, der Server antwortet ja - ich hab aber die Vermutung, dass er sich dafür manchmal zu lange Zeit lässt; in der Entwicklungsumgebung kann ich das ja auch mit Wireshark prüfen, ich wollt das aber auch in das Endprodukt integrieren und dort haben wir keine Möglichkeit, zusätzliche Treiber zu installieren o.ä. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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