AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Netzwerk Latenz simulieren

Netzwerk Latenz simulieren

Ein Thema von ddcool · begonnen am 29. Jan 2013 · letzter Beitrag vom 30. Jan 2013
Antwort Antwort
ddcool

Registriert seit: 8. Jun 2003
146 Beiträge
 
Delphi XE2 Architect
 
#1

Netzwerk Latenz simulieren

  Alt 29. Jan 2013, 20:21
hallo liebe DPler,

ich hätte da mal eine Frage an die Super-Gehirne hier im Forum.
Ich bin gerade dabei ein kleines Tool zu schreiben, welches via Sockets als Server agiert und TCP Verbindungen entgegen nimmt.
Auf der anderen Seite hat es einen Client Socket der sich wiederum zu einem vordefinierten Server verbindet und den Datenverkehr
vom Socket Server transparent durchschleusen soll (und natürlich auch anders herum). Dies klappt soweit auch problemlos.
Ziel ist es dann, dass mein Tool die Pakete mit einem vordefinierten Delay verschickt, um eine Latenz im Netzwerk zu simulieren.

Mein Problem besteht darin, dass ein Client sich verbindet und natürlich sofort seinen TCP Handshake mit dem Server vollzieht.
Nun muss aber mein Tool erst die Verbindung (Client Socket) hergestellt haben um die Daten weiterleiten zu können, bevor der eigentliche
Client überhaupt Daten senden darf. Dies ist meiner Meinung nach nur zu bewerkstelligen, wenn man den TCP Handshake beim Server Socket
irgendwie verzögern kann. Also das SYN-ACK sollte so lange aufgehalten werden, bis der Client Socket seine Verbindung hat.

Ist das mit Sockets überhaupt möglich und wenn ja, wie?

Hier eine kleine Zeichnung, falls meine Beschreibung nicht einleuchtend ist ^^
Zur Info,

Programm XY ---> (ServerSocket:1477)MeinProgramm(ClientSocket:3389) ---> Server XY

Viele Grüße,
ddcool
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

AW: Netzwerk Latenz simulieren

  Alt 29. Jan 2013, 21:04
Wenn ich dich richtig verstanden habe, möchtest du den Handshake erst zwischen deinem Proxy und dem Client erst beenden, wenn der Proxy die Verbindung zum Server aufgebaut hat.
Das sollte möglich sein, indem du die Verbindung des Clients erst annimmst (accept), wenn du die Verbindung zum Server hergestellt hast.
Andererseits könntest du die Daten einfach zwischenspeichern.

Außerdem:
  • Ich könnte mir vorstellen, dass du für dein Tool auch mit den Größen der Sende/Empfangs-Buffer herumspielen möchtest.
  • Wenn du ernsthaft etwas testen möchtest, würde ich überlegen, ob eine fertige Lösung vielleicht besser wäre.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
ddcool

Registriert seit: 8. Jun 2003
146 Beiträge
 
Delphi XE2 Architect
 
#3

AW: Netzwerk Latenz simulieren

  Alt 30. Jan 2013, 06:34
Guten Morgen BUG,

vielen Dank für die schnelle Antwort.
Wenn das also möglich ist den "accept" zu verzögern, würde ich dich bitten mir einmal kurz zu erläutern,
wie dies mit den Sockets funktioniert (TClientSocket & TServerSocket).

Zu deinen Bemerkungen:

1. Japp das soll aber erst viel später mal realisiert werden und trotzdem soll die Verbindung auch hier erst akzeptiert werden,
wenn die Verbindung Proxy->Server hergestellt ist.

2. Ich habe schon nach freier Software gesucht und auch ein Tool gefunden, welches aber nicht mehr so richtig weiterentwickelt wird.
Zudem verursacht dieses Tool selbst bei der Einstellung von 0ms Delay eine spürbare Latenz. Das ist unschön und man kann so nicht testen.


Grüße,
ddcool
  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 · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 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