AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke TCP Connection - ACK der Gegenseite abwarten
Thema durchsuchen
Ansicht
Themen-Optionen

TCP Connection - ACK der Gegenseite abwarten

Ein Thema von mentaltec · begonnen am 5. Nov 2012 · letzter Beitrag vom 7. Nov 2012
Antwort Antwort
mentaltec

Registriert seit: 28. Sep 2012
60 Beiträge
 
#1

TCP Connection - ACK der Gegenseite abwarten

  Alt 5. Nov 2012, 10:14
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
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#2

AW: TCP Connection - ACK der Gegenseite abwarten

  Alt 5. Nov 2012, 12:18
kennt jemand eine Möglichkeit, bei einer nonblocking TCP-Verbindung zu bestimmen, welche Pakete von der Gegenseite ge'akt' wurden
Welche Socket API wird denn verwendet, Winsock, Berkeley, ... ?

Ich könnte falsch liegen, aber wird dazu Zugriff auf Raw Sockets benötigt? Die sind durch einen nicht entfernbaren Hotfix ab Windows XP nicht mehr über Winsock nutzbar.
Michael Justin
  Mit Zitat antworten Zitat
mentaltec

Registriert seit: 28. Sep 2012
60 Beiträge
 
#3

AW: TCP Connection - ACK der Gegenseite abwarten

  Alt 5. Nov 2012, 15:47
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
http://de.wikipedia.org/wiki/Transmi...3.BCbertragung
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.762 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TCP Connection - ACK der Gegenseite abwarten

  Alt 5. Nov 2012, 15:59
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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: TCP Connection - ACK der Gegenseite abwarten

  Alt 6. Nov 2012, 08:59
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.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
mentaltec

Registriert seit: 28. Sep 2012
60 Beiträge
 
#6

AW: TCP Connection - ACK der Gegenseite abwarten

  Alt 6. Nov 2012, 10:59
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.

http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

mfg
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: TCP Connection - ACK der Gegenseite abwarten

  Alt 5. Nov 2012, 13:15
kennt jemand eine Möglichkeit, bei einer nonblocking TCP-Verbindung zu bestimmen, welche Pakete von der Gegenseite ge'akt' wurden
Bei non-blocking musst du ganze Befehle selber "ACKEN". Bei TCP ist es nicht nötig, einzelne Datenpakete zu "ACKEN", weil das Protokoll selber sicherstellt, dass die Paket(fragmente) da ankommen, wo sie hinsollen.

Vielleicht hilft dir ja die Overbyte "Internet Component Suite" (ICS) da weiter. Die ist komplett non-blocking und da sind etliche Beispiele mit bei.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#8

AW: TCP Connection - ACK der Gegenseite abwarten

  Alt 6. Nov 2012, 17:19
Hallo,
kennt jemand eine Möglichkeit, bei einer nonblocking TCP-Verbindung zu bestimmen, welche Pakete von der Gegenseite ge'akt' wurden

Gegenseite heisst dabei natürlichh "der Kernel der Gegenseite", also deren TCP Stack.

Es bedeutet aber nicht, dass die serverseitige Anwendung die Pakete komplett erhalten hat, denn das kann über ACK nicht festgestellt werden.

How can I explicitly wait for a TCP ACK before proceeding?
Michael Justin

Geändert von mjustin ( 6. Nov 2012 um 17:22 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 20:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz