Próbuję zaimplementować SysInternals Marka Russinovicha PsPing tool w języku C#, aby zmierzyć opóźnienia przy użyciu ping TCP.Jak zaimplementować ping ping PsPing w C#
Nie jestem pewien, w jaki sposób wywołuje ping (najwyraźniej nie używa surowych gniazd Window, ponieważ nie wymaga uprawnień administratora do uruchomienia). Wiem, że hping
wysyła pakiet SYN przez TCP i mierzy czas odpowiedzi.
Jaka byłaby technika wykonania dokładnego pomiaru opóźnień serwera, które przez TCP nie mierzy czasu ładowania strony, a jedynie opóźnienie sieci dla potwierdzenia odbioru? Czy istnieje biblioteka do tego?
C:\>psping stackoverflow.com:80
PsPing v2.01 - PsPing - ping, latency, bandwidth measurement utility
Copyright (C) 2012-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
Pinging 198.252.206.16 with 32 bytes of data:
5 iterations (warmup 1) ping test:
Reply from 198.252.206.16: 81.57ms
Reply from 198.252.206.16: 80.81ms
Reply from 198.252.206.16: 80.68ms
Reply from 198.252.206.16: 80.52ms
Reply from 198.252.206.16: 80.71ms
Ping statistics for 198.252.206.16:
Sent = 4, Received = 4, Lost = 0 (0% loss),
Minimum = 80.52ms, Maximum = 80.81ms, Average = 80.68ms
Aktualizacja: Proszę nie odpowiedzieć jak „dlaczego nie można użyć klasy Ping, to już robi coś”, jak pytam o ping przez TCP, ICMP nie.
Wiele narzędzi Sysinternals korzysta z nieudokumentowanych wywołań systemowych. Jest mało prawdopodobne, aby znaleźć łatwe do odniesienia źródło mówiąc, jak to robi, nie mówiąc o tym, jak zrobić to samo z C#. –
@ScottChamberlain po prostu wypróbowując może istnieje metoda, o której nie wiem. –
@ahmetalpbalkan: co z klasą Ping, która umożliwia pingowanie serwera lub wewnętrznego adresu IP i można uzyskać powtórkę Time? http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping%28v=vs.110%29.aspx – houssam