次の方法で共有


ping -t

Kazdy wie, ze ping.exe uruchomiony z parametrem -t wysyla pakiety, i wysyla, i wysyla, i wysyla...

Wedlug dokumentacji - bez konca. Tymczasem prawda jest inna. Zamiast wysylac w nieskonczonosc, ping.exe wysle "tylko" 4294967295 pakietów.

Minimalny (i niezmienialny!) odstep miedzy pakietami wynosi 1s. Czyli zamiast wiecznosc, cala zabawa potrwa ~135 lat.

Czy to wazne? Chyba nie... za to ciekawe i a nuz przyda sie w jakims konkursie... ;))

Autor: Grzegorz Tworek

Comments

  • Anonymous
    January 01, 2003
    Wiadomo ze ver. 32-bit (2^32) wysle 4294967295, a ver. 64-bit (2^64) wysle az 18446744073709551615 O ile wiem, wersja 64bit też używa w tym miejscu uint.

  • Anonymous
    January 01, 2003
    Jeśli już wchodzisz w takie zbędne 'szczegóły' to pominałęś fakt, że ping nie jest wysyłany DOKŁADNIE co sekundę, tylko za każdym razem minimalnie później, więc słówko 'niezmienialny' jest zdecydowanie nie na miejscu :P Nie do końca. Czas powrotu pinga jest za każdym razem odejmowany od tej niezmienialnej sekundy, więc to opóźnienie to naprawdę nieduża wartość. Poza tym, napisałem że sekunda to czas minimalny. Może być więcej, wystarczy że coś nie odpowiada na pinga....

  • Anonymous
    January 01, 2003
    ping.exe ma 15360 bajtów. Można go poprawić i zapewniam Cię, że to w tym przypadku nie kwestia tego, że nikt nie potrafi. Tylko czy dystrybuując poprawkę z nowymi binariami do milionów komputerów nie zajmie się trochę więcej "cennych bajtów"? ;))) Błędy były i będą. Tak samo jak były i będą sytuacje, w których co innego pisze się w dokumentacji dla użytkowników a co innego w kodzie. Wiedzieć o takich sytuacjach warto. A czy warto do tego robić jakieś zamieszanie - odpowiedz sobie sam :)

  • Anonymous
    January 01, 2003
    CO z tego z 135 lat skoro windows wytrzyma z tydzien :_) Może źle zaistalowałeś? Bo mój rekord to ponad dwa lata ciągłej pracy jako serwer plików w firmie. ;))

  • Anonymous
    January 01, 2003
    ping (i w ogóle ICMP w Windows) próbuje dla każdego powracającego pakietu echo dopasować żądanie, dla którego ten pakiet wrócił. Jest tabela żądań i jak coś wróci - poszukiwane w niej są dane, które pozwalają na stwierdzenie kto był sprawcą. Każde żądanie ma w polu StartTime zapisany czas wysłania. Jak pakiet powraca, to od bieżącego czasu odejmowany jest czas wysłania i mamy czas wędrówki pakietu. Teoria jest prosta. Problem zaczyna się przy praktyce. Konkretnie podczas pomiaru czasu. Metod jest wiele, ale używana jest superdokładna funkcja KeQueryPerformanceCounter. Funkcja ta opiera się na zliczaniu sumy "tyknięć" zegara CPU. Problem w tym, że wielordzeniowe procesory AMD mają własny pogląd na ten temat i w zależności od tego, do którego rdzenia trafią rozkazy związane z obsługą KeQueryPerformanceCounter, odpowiedzi przychodzą różne. W efekcie, ping, który swobodnie między rdzeniami sobie wędruje, może od jednego rdzenia dostać czas wysłania późniejszy niż od drugiego czas dotarcia odpowiedzi. Odjęcie tych wartości daje ujemny czas wędrówki pakietu. Nie mam pod ręką komputera na którym pojawiałby się taki błąd, ale prostą drogą obejścia problemu powinno być zmienienie affinity dla procesu ping.exe tak, żeby wykonywał się tylko na jednym rdzeniu. Ewentualnie można żonglować PerfEnablePackageIdle ale wydaje mi się, że to może skutkować zwiększonym poborem energii podczas bezczynności, co z kolei może być bolesne w laptopach.

  • Anonymous
    March 18, 2008
    Znaczy, nie umiecie napisać programu tak, że działa jak w dokumentacji, i zamiast to poprawić - rozprawiacie o tym w internecie, zajmując cenne kilobajty na tekst równie sensowny jak ten komentarz? Podziwiam, podziwiam...

  • Anonymous
    March 19, 2008
    clondike, widzę, że już nie masz się czego przyczepić. Daj sobie na wstrzymanie człowieku. Jeśli ograniczenie długości ping -t do 135 lat traktujesz jako błąd to lepiej puknij się w czółko i weź jakieś ziółka na uspokojenie. Ech.

  • Anonymous
    March 19, 2008
    Nie można tego zmienić, bo wszystkie programy które liczą na to, że ping przestanie działać po 135 latach zwyczajnie trzeba by poprawiać.

  • Anonymous
    March 19, 2008
    Jeśli już wchodzisz w takie zbędne 'szczegóły' to pominałęś fakt, że ping nie jest wysyłany DOKŁADNIE co sekundę, tylko za każdym razem minimalnie później, więc słówko 'niezmienialny' jest zdecydowanie nie na miejscu :P

  • Anonymous
    March 19, 2008
    Wiadomo ze ver. 32-bit (2^32) wysle 4294967295, a ver. 64-bit (2^64) wysle az 18446744073709551615. Anyway, ciekawe lol.

  • Anonymous
    March 19, 2008
    CO z tego z 135 lat skoro windows wytrzyma z tydzien :_)

  • Anonymous
    March 19, 2008
    Wasza przeglądarka (IE) nie radzi sobie w tym szablonem bloga. Komiczne :)

  • Anonymous
    April 20, 2008
    ping pingiem a co jak mi wyskakuje minusowy? gdzieś kiedyś czytałem o tym ale nie moge teraz tego znaleźć google wywala tylko chucka norrisa który gra w call of duty znacie lekarstwo? napiszcie na maila time=-1ms np...

  • Anonymous
    May 22, 2008
    jakoś nikt jeszcze nie powiedział że dla człowieka  który ogółem biorąc żyje dość krótko ( porównajcie z jakimś żółwikiem czy sekwoją ) 135 lat to już wieczność, gdyż zgodnie z twierdzeniami prawie każdej religii po takim czasie zacznie "życie wieczne" =D

  • Anonymous
    February 21, 2009
    Na stronie znajduje się test prędkości sieci wraz z pomiarem czasu odpowiedzi PING oraz mierzeniem maksymalnej liczby połączeń.