Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0329: Einen Server anpingen

 von 

Beschreibung 

Hiermit ist es möglich Rechner im Netzwerk anzupingen. Dabei kann die Paketgröße und -art als auch ein TimeOut festgelegt werden. Sämtliche Echodaten werden ausgelesen und angezeigt.

Update von Helge Rex am 08. Februar 2003: Nun wird auch der TTL-Wert angezeigt.

Schwierigkeitsgrad:

Schwierigkeitsgrad 3

Verwendete API-Aufrufe:

RtlMoveMemory (CopyMemory), IcmpCloseHandle, IcmpCreateFile, IcmpSendEcho, WSACleanup, WSAGetLastError, WSAStartup, gethostbyname, gethostname, htonl, htons, inet_addr, inet_ntoa, ntohl, ntohs

Download:

Download des Beispielprojektes [5,42 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Textfeld "Text1" (Index von 0 bis 6)
' Steuerelement: Rahmensteuerelement "Frame1"
' Steuerelement: Textfeld "Text4" auf Frame1
' Steuerelement: Textfeld "Text3" auf Frame1
' Steuerelement: Textfeld "Text2" auf Frame1
' Steuerelement: Schaltfläche "Command1" auf Frame1
' Steuerelement: Beschriftungsfeld "Label10" auf Frame1
' Steuerelement: Beschriftungsfeld "Label9" auf Frame1
' Steuerelement: Beschriftungsfeld "Label8" auf Frame1
' Steuerelement: Beschriftungsfeld "Label7" auf Frame1
' Steuerelement: Beschriftungsfeld "Label6" auf Frame1
' Steuerelement: Beschriftungsfeld "Label5" auf Frame1
' Steuerelement: Beschriftungsfeld "Label4" auf Frame1
' Steuerelement: Beschriftungsfeld "Label3" auf Frame1
' Steuerelement: Beschriftungsfeld "Label2" auf Frame1
' Steuerelement: Beschriftungsfeld "Label1" auf Frame1


'Autor: Stefan Moosbauer
'E-Mail: stefan.moosbauer@aon.at

Option Explicit

Private Sub Command1_Click()
    Dim ECHO As ICMP_ECHO_REPLY
    Dim pos As Integer
   
    'Die Ping-Funktion aufrufen:
    Call Ping(Trim$(Text2.Text), ECHO)
    
    'Ergebnisse anzeigen
    Text1(0) = GetStatusCode(ECHO.Status)
    Text1(1) = ECHO.Address
    Text1(2) = ECHO.RoundTripTime & " ms"
    Text1(3) = ECHO.DataSize & " bytes"
    
    If Left$(ECHO.Data, 1) <> Chr$(0) Then
        pos = InStr(ECHO.Data, Chr$(0))
        Text1(4) = Left$(ECHO.Data, pos - 1)
    End If
    
    Text1(5) = ECHO.DataPointer
    Text1(6) = ECHO.Options.Ttl
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'--------- Anfang Modul "Module1" alias Module1.bas ---------

Option Explicit

Private Declare Function IcmpCreateFile Lib "icmp.dll" () _
        As Long

Private Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal _
        IcmpHandle As Long) As Long
   
Private Declare Function IcmpSendEcho Lib "icmp.dll" (ByVal _
        IcmpHandle As Long, ByVal DestinationAddress As Long, _
        ByVal RequestData As String, ByVal RequestSize As _
        Integer, ByVal RequestOptions As Long, ReplyBuffer As _
        ICMP_ECHO_REPLY, ByVal ReplySize As Long, ByVal _
        TimeOut As Long) As Long
    
Private Declare Function WSAGetLastError Lib "wsock32.dll" () _
        As Long

Private Declare Function WSAStartup Lib "wsock32.dll" (ByVal _
        wVersionRequired As Long, lpWSAData As WSAData) As Long
    
Private Declare Function WSACleanup Lib "wsock32.dll" _
        () As Long

Private Declare Function gethostname Lib "wsock32.dll" _
        (ByVal szHost As String, ByVal dwHostLen _
        As Long) As Long
    
Private Declare Function gethostbyname Lib "wsock32.dll" _
        (ByVal szHost As String) As Long
   
Private Declare Sub CopyMemory Lib "kernel32" Alias _
        "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As _
        Long, ByVal cbCopy As Long)

Private Declare Function htonl Lib "wsock32.dll" (ByVal hostlong _
        As Long) As Long
        
Private Declare Function htons Lib "wsock32.dll" (ByVal hostshort _
        As Long) As Integer
        
Private Declare Function inet_addr Lib "wsock32.dll" (ByVal cp _
        As String) As Long
        
Private Declare Function inet_ntoa Lib "wsock32.dll" (ByVal inn _
        As Long) As Long
        
Private Declare Function ntohl Lib "wsock32.dll" (ByVal netlong _
        As Long) As Long
        
Private Declare Function ntohs Lib "wsock32.dll" (ByVal netshort _
        As Long) As Integer
    
Private Type ICMP_OPTIONS
    Ttl As Byte
    Tos As Byte
    Flags As Byte
    OptionsSize As Byte
    OptionsData As Long
End Type

Public Type ICMP_ECHO_REPLY
    Address As Long
    Status As Long
    RoundTripTime As Long
    DataSize As Integer
    Reserved As Integer
    DataPointer As Long
    Options As ICMP_OPTIONS
    Data As String * 250
End Type

Private Type hostent
    hName As Long
    hAliases As Long
    hAddrType As Integer
    hLen As Integer
    hAddrList As Long
End Type

Private Const MAX_WSADescription As Long = 256&
Private Const MAX_WSASYSStatus As Long = 128&
Private Const MAXGETHOSTSTRUCT As Long = 1024&

Private Type WSAData
    wVersion As Integer
    wHighVersion As Integer
    szDescription(0 To MAX_WSADescription) As Byte
    szSystemStatus(0 To MAX_WSASYSStatus) As Byte
    wMaxSockets As Integer
    wMaxUDPDG As Integer
    dwVendorInfo As Long
End Type

Private Type hostent_async
    h_name As Long
    h_aliases As Long
    h_addrtype As Integer
    h_length As Integer
    h_addr_list As Long
    h_asyncbuffer(MAXGETHOSTSTRUCT) As Byte
End Type
    
Private Const IP_STATUS_BASE As Long = 11000&
Private Const IP_SUCCESS As Long = 0&
Private Const IP_BUF_TOO_SMALL As Long = (11000& + 1&)
Private Const IP_DEST_NET_UNREACHABLE As Long = (11000& + 2&)
Private Const IP_DEST_HOST_UNREACHABLE As Long = (11000& + 3&)
Private Const IP_DEST_PROT_UNREACHABLE As Long = (11000& + 4&)
Private Const IP_DEST_PORT_UNREACHABLE As Long = (11000& + 5&)
Private Const IP_NO_RESOURCES As Long = (11000& + 6&)
Private Const IP_BAD_OPTION As Long = (11000& + 7&)
Private Const IP_HW_ERROR As Long = (11000& + 8&)
Private Const IP_PACKET_TOO_BIG As Long = (11000& + 9&)
Private Const IP_REQ_TIMED_OUT As Long = (11000& + 10&)
Private Const IP_BAD_REQ As Long = (11000& + 11&)
Private Const IP_BAD_ROUTE As Long = (11000& + 12&)
Private Const IP_TTL_EXPIRED_TRANSIT As Long = (11000& + 13&)
Private Const IP_TTL_EXPIRED_REASSEM As Long = (11000& + 14&)
Private Const IP_PARAM_PROBLEM As Long = (11000& + 15&)
Private Const IP_SOURCE_QUENCH As Long = (11000& + 16&)
Private Const IP_OPTION_TOO_BIG As Long = (11000& + 17&)
Private Const IP_BAD_DESTINATION As Long = (11000& + 18&)
Private Const IP_ADDR_DELETED As Long = (11000& + 19&)
Private Const IP_SPEC_MTU_CHANGE As Long = (11000& + 20&)
Private Const IP_MTU_CHANGE As Long = (11000& + 21&)
Private Const IP_UNLOAD As Long = (11000& + 22&)
Private Const IP_ADDR_ADDED As Long = (11000& + 23&)
Private Const IP_GENERAL_FAILURE As Long = (11000& + 50&)
Private Const MAX_IP_STATUS As Long = 11000& + 50&
Private Const IP_PENDING As Long = (11000& + 255&)
Private Const PING_TIMEOUT As Long = 200&
Private Const WS_VERSION_REQD As Long = &H101&
Private Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100& And &HFF&
Private Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&
Private Const MIN_SOCKETS_REQD As Long = 1&
Private Const SOCKET_ERROR As Long = -1&
Private Const INADDR_NONE As Long = &HFFFFFFFF

'Variablen:
'==========

Public Const hostent_size As Long = 16&
Public PointerToPointer As Long, IPLong As Long

Dim hostent_async As hostent_async
Dim ICMPOPT As ICMP_OPTIONS

Public Function GetHost(ByVal Host As String) As Long
    Dim ListAddress As Long
    Dim ListAddr As Long
    Dim LH As Long, phe As Long
    Dim Start As Boolean
    Dim heDestHost As hostent
    Dim addrList As Long, repIP As Long

    Start = SocketsInitialize
    If Start = False Then
        GetHost = 0
        MsgBox ("Fehler bei der SocketInitialisierung!")
        Exit Function
    End If

    LH = inet_addr(Host)
    repIP = LH
    If LH = INADDR_NONE Then
        phe = gethostbyname(Host)
        If phe <> 0 Then
            CopyMemory heDestHost, ByVal phe, hostent_size
            CopyMemory addrList, ByVal heDestHost.hAddrList, 4
            CopyMemory repIP, ByVal addrList, heDestHost.hLen
        Else
            Call MsgBox("GetHostByName lieferte ungültiges Ergebnis!")
            GetHost = INADDR_NONE
            Exit Function
        End If
    End If
    
    Form1.Text4.Text = CStr(repIP)
    GetHost = repIP
End Function

Public Function GetStatusCode(Status As Long) As String
    Dim Msg As String

    Select Case Status
        Case IP_SUCCESS:               Msg = "ip success"
        Case IP_BUF_TOO_SMALL:         Msg = "ip buf too_small"
        Case IP_DEST_NET_UNREACHABLE:  Msg = "ip dest net unreachable"
        Case IP_DEST_HOST_UNREACHABLE: Msg = "ip dest host unreachable"
        Case IP_DEST_PROT_UNREACHABLE: Msg = "ip dest prot unreachable"
        Case IP_DEST_PORT_UNREACHABLE: Msg = "ip dest port unreachable"
        Case IP_NO_RESOURCES:          Msg = "ip no resources"
        Case IP_BAD_OPTION:            Msg = "ip bad option"
        Case IP_HW_ERROR:              Msg = "ip hw_error"
        Case IP_PACKET_TOO_BIG:        Msg = "ip packet too_big"
        Case IP_REQ_TIMED_OUT:         Msg = "ip req timed out"
        Case IP_BAD_REQ:               Msg = "ip bad req"
        Case IP_BAD_ROUTE:             Msg = "ip bad route"
        Case IP_TTL_EXPIRED_TRANSIT:   Msg = "ip ttl expired transit"
        Case IP_TTL_EXPIRED_REASSEM:   Msg = "ip ttl expired reassem"
        Case IP_PARAM_PROBLEM:         Msg = "ip param_problem"
        Case IP_SOURCE_QUENCH:         Msg = "ip source quench"
        Case IP_OPTION_TOO_BIG:        Msg = "ip option too_big"
        Case IP_BAD_DESTINATION:       Msg = "ip bad destination"
        Case IP_ADDR_DELETED:          Msg = "ip addr deleted"
        Case IP_SPEC_MTU_CHANGE:       Msg = "ip spec mtu change"
        Case IP_MTU_CHANGE:            Msg = "ip mtu_change"
        Case IP_UNLOAD:                Msg = "ip unload"
        Case IP_ADDR_ADDED:            Msg = "ip addr added"
        Case IP_GENERAL_FAILURE:       Msg = "ip general failure"
        Case IP_PENDING:               Msg = "ip pending"
        Case PING_TIMEOUT:             Msg = "ping timeout"
        Case Else:                     Msg = "unknown  msg returned"
    End Select
   
    GetStatusCode = CStr(Status) & "   [ " & Msg & " ]"
End Function

Private Function HiByte(ByVal wParam As Integer)
    HiByte = wParam \ &H100 And &HFF&
End Function

Private Function LoByte(ByVal wParam As Integer)
    LoByte = wParam And &HFF&
End Function

Public Function Ping(szAddress As String, ECHO As ICMP_ECHO_REPLY) As Long
    Dim hPort As Long
    Dim dwAddress As Long
    Dim sDataToSend As String
    Dim iOpt As Long
    Dim a As String
   
    sDataToSend = Trim$(Form1.Text3.Text)
    dwAddress = GetHost(szAddress)
    
    hPort = IcmpCreateFile()
    
    If IcmpSendEcho(hPort, dwAddress, sDataToSend, Len(sDataToSend), _
                    0, ECHO, Len(ECHO), PING_TIMEOUT) Then
    
        Ping = ECHO.RoundTripTime
    Else
        Ping = ECHO.Status * -1
    End If
                        
    Call IcmpCloseHandle(hPort)
    a = SocketsCleanup
End Function
   
Private Function AddressStringToLong(ByVal Tmp As String) As Long
    Dim i As Integer
    Dim parts(1 To 4) As String
    
    i = 0
    While InStr(Tmp, ".") > 0
        i = i + 1
        parts(i) = Mid(Tmp, 1, InStr(Tmp, ".") - 1)
        Tmp = Mid(Tmp, InStr(Tmp, ".") + 1)
    Wend
    
    i = i + 1
    parts(i) = Tmp
    
    If i <> 4 Then
        AddressStringToLong = 0
        Exit Function
    End If
    
    AddressStringToLong = Val("&H" & Right("00" & Hex(parts(4)), 2) & _
        Right("00" & Hex(parts(3)), 2) & Right("00" & Hex(parts(2)), 2) & _
        Right("00" & Hex(parts(1)), 2))
End Function

Private Function SocketsCleanup() As Boolean
    Dim X As Long
    
    X = WSACleanup()
    If X <> 0 Then
        Call MsgBox("Windows Sockets error " & Trim$(Str$(X)) & _
            " occurred in Cleanup.", vbExclamation)
        
        SocketsCleanup = False
    Else
        SocketsCleanup = True
    End If
End Function

Private Function SocketsInitialize() As Boolean
    Dim WSAD As WSAData
    Dim X As Integer
    Dim szLoByte As String, szHiByte As String, szBuf As String
    
    X = WSAStartup(WS_VERSION_REQD, WSAD)
    If X <> 0 Then
        Call MsgBox("Windows Sockets for 32 bit Windows " & _
                  "environments is not successfully responding.")
        
        SocketsInitialize = False
        Exit Function
    End If
    
    SocketsInitialize = True
End Function
'---------- Ende Modul "Module1" alias Module1.bas ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 26 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Sag ich doch nich am 31.01.2010 um 18:13

Ich habe noch nie einen Tipp gelesen der geht. Habe vista und Vb 2005. Auserdem hab ich schon vor nem Jahr gesagt: Fügen Sie vista und win7 in ihre combobox!! In welcher zeit sind Sie stehen geblieben? 2002?

Kommentar von Sag ich doch nich am 31.01.2010 um 18:08

Ich habe noch nie einen Tipp gelesen der geht. Habe vista und Vb 2005. Auserdem hab ich schon vor nem Jahr gesagt: Fügen Sie vista und win7 in ihre combobox!! In welcher zeit sind Sie stehen geblieben? 2002?

Kommentar von Benjamin am 13.10.2005 um 15:12

Man kann keine Ports anpingen! Deswegen bekommst du eine Fehlermeldung!

Kommentar von Marco44 am 27.04.2005 um 03:51

Wenn man zB einen CS Server anpingt IP:Port zB
( 195.4.16.231:27015 ) bekomm ich eine Fehlermeldung zurück: GetHostByName lieferte ungültiges Ergebnis!
Es ist wichtig den Port mit anzugeben denn bei zB.
195.4.16.231:27016 kann der Ping ganz anders sein.

Kommentar von Eisbaer am 12.04.2005 um 11:45

Klappt soweit ganz gut. Nur ich bekomme oft einen Ping der grösser ist als der Timeout, was ja eigendlich garnicht sein kann....

Kommentar von Johannes Roth am 11.08.2004 um 16:10

Das was du suchst ist ein Portscanner. Dieser Quellcode erzeugt aber ICMP Echo Pings.
Du musst Verbindungsanfragen erzeugen und zwar auf ALLE mögliche Ports!! Dauert ne Weile und was vieel wichtiger ist: das ist verboten wenn du nicht der Besitzer des PCs bist und sicher bist das nur dein PC gescannt wird!
Da gibts auch viele Programme im Inet...

Kommentar von Patrick hegemann am 11.08.2004 um 15:48

Guten Tag,

Weis einer nen Source wo man auf einen Server pingt, und das Programm zeigt dann alle offenen Ports an?

Kommentar von Prof. Dr. Hase am 16.05.2004 um 19:36

also da meinen kleinen nager hier von nicht so viel ahnung haben, würde ich sagen, dass wir noch nen paar kleine fress gelegenheiten einrichten so jede 50 chunks. doch diese müssen wir ja erst komplentieren! die moduldateien könnten ja ruhig ein update vertragen denn ich habe soviele sicherheitslöcher gefunden oder besser gesagt meine nigga-nager habe diese löcher gemacht!
also immer schon weiter _NO_RESOURCES: Msg = "ip no resources"
Case IP_BAD_OPTION: Msg = "ip bad option"
Case IP_HW_E
RROR: Msg = "ip hw_erro
r"
Case IP_PACKET_TOO_BIG: Msg = "ip packet too_big"
Case IP_REQ_TIMED_OUT: Msg =
"ip req timed out"
Case IP_BAD_REQ: Msg = "ip bad req"
Case IP_BAD_ROUTE: Msg = "ip bad route"
Case IP_TTL_EXPIRED_TRANSIT: Msg

Kommentar von FanatiX am 27.02.2004 um 20:33

jetz haste ja schon alles verraten ;)
mir isses auch bewusst, das es ab win2k nich mehr geht...aber die vorversionen...naja egal zum post-zeitpunkt hatte ich jedenfalls noch win98 ;)

Kommentar von Johannes Roth am 25.02.2004 um 17:50

@FanatiX:

ich glaube da ist jemand nicht mehr so ganz auf dem neuesten Stand: Win2k (und höher) versendet keine zu großen Pings mehr! PoD (Ping of Death) fällt sowieso fast immer aus da ja hoffentlich die meisten Leute eine Firewall einsetzen. Nuking oder Flooding is auch nur möglich wenn deine Bandbreite und Sendegeschwindigkeit höher als die des Opfers is (mehrer PCs!).

Außerdem: ich sehe kein Problem zu sagen wie so was geht, denn wer ein unsicheres System entwickelt und wer sich danach nicht drum kümmer (Firewall!) der ist selbst Schuld!

Kommentar von Daniel Köhler am 29.12.2003 um 00:29

@ Mr. Digit
Du musst vor dem Compilieren die Moduldatei einbinden, sonst funzt es nicht.

Kommentar von Mr. Digit am 28.09.2003 um 17:31

hi, habe das programm kompilieren wollen und erhalte die Meldung:

Benutzerdefinierter Typ nicht definiert

in der Zeile:

Dim ECHO As ICMP_ECHO_REPLY

Woran kann das liegen?

Folgende Bibliothekn sind aktiviert. Habs überprüft.

DAO habe ich auch schon einmal neuinstalliert.

Visual Basic For Applications
Microsoft Access 9.0 Object Library
Microsoft DAO 3.6 Object Library
OLE Automation

Kommentar von Noob am 16.03.2003 um 14:09

hi gutes ding aber ich hab keine ahnung wie ich das zum laufen brinen ist ja alles nur codes hab VB 6.0 Installiert weiter hab mal schon code rein getun usw..aber KA wie koennte mir einer ne antwort geben wäre euch tausend mal dankbar.

Kommentar von FanatiX am 15.02.2003 um 12:10

übrigens: mit pingen sollte man vorsichtig sein....jemand der sich mit vb gut auskennt weiss wie man mit nomalen pings einen server zum absturz bringen kann oder den "ping of death" zu erzeugen...ich will darauf nicht eingehen, da das hier public ist
ich geb nur das stichwort "nuking" und "ping of death"

Kommentar von Binary am 06.11.2002 um 23:39

@Cenk Tura:
Man kann mehr als 250 Bytes senden, man muß nur etwas im Quellcode ändern.

Modul1.bas - Zeile 77:
Data As String * 250

Ändern zum Beispiel in:
Data As String * 1000

Ich habs probier (Win2000 VB5) mit 697 Bytes.

Die Paketgröße darf theoretisch maximal 65335 Bytes betragen. Da aber das IP-Protokoll hauptsächlich in Ethernet eingesetzt wird, ist das Maximum viel kleiner. Das gesamte Ethernatpaket, indem das IP-Paket eingebettet ist, hat eine Größe von 1500 Bytes.
Dank der intelligent Programmierten IP-Stacks werden die Daten automatisch fragmentiert.

Du meinst sicherlich das NSF, denn das hat diese Paketgröße.

Kommentar von Cenk Tura am 27.08.2002 um 12:58

Warum kann ich keine Datenpakete größer 250 Bytes benutzen um einen Rechner anzupingen. Es wird sofort der Fehler IP Buffer to small ausgegeben. Soweit mir bekannt ist, liegt die Grenze sonst bei 8192 Bytes?

Kommentar von magicshadow am 22.01.2002 um 17:53

Kann man auch irgendwie bestimmen ob man von wehm mit was angepingt wurde? (Frage verstanden?) ;)
THX

Kommentar von Steffen Merkel am 24.10.2001 um 17:21

Wie bekomme ich die MAC-Adresse des angepingten PCs?

Kommentar von crispin am 23.10.2001 um 22:08

ohgott - sorry - jetzt zur korrektur ich habs :)
das feld der daten die der ping sendet war leer oder mit dem inhalt der upd packete gefüllt :
jetzt tuts!

Kommentar von crispin am 23.10.2001 um 22:01

ich habs mal getestet und auch das problem erkannt. die upd dataarrival funktion nimmt die ankommenden daten aus der arrivalqueue. die pingdaten kommen also nicht wieder zur auswertung zurück, sondern werden andersweitig abgegriffen. - eine lösung habe ich bisher nicht. hat jmd eine? :)

Kommentar von crispin am 21.10.2001 um 19:24

Kann es sein dass die sache nicht funtktionbiert wenn ich zeitgleich eine UDP verbindung zu dem server herstelle bzw. am laufen habe?
ich qwery mit meinem programm quakeserver und wollte noch den ping ermitteln. da bekomme ich immer 8 stellige zahlen zurück. sobald ich ein server eingebe auf dem kein quakeserver läuft, also auch kein reply kommt schein die sache zu funktionieren.
antwort wenn möglich per mail :D

Kommentar von Stefan am 25.08.2001 um 18:59

Mit dem Timer-Tip (genaue Genauigkeit) kann man den Ping auch sehr genau bestimmen...

Kommentar von Stefan am 18.08.2001 um 22:10

Kann man den ICMP-Reply auch genauer Messen? Im lokalen Netzwerk bekommt man ja beinahe immer "1ms".

Kommentar von Mario am 11.01.2001 um 12:50

Warum kann ich keine Datenpakete größer 250 Bytes benutzen um einen Rechner anzupingen. Es wird sofort der Fehler IP Buffer to small ausgegeben. Soweit mir bekannt ist, liegt die Grenze sonst bei 8192 Bytes?

Kommentar von Götz Reinecke am 06.01.2001 um 03:10

Hallo Roman, was spricht denn dagegen dieses Programm in ein Timer-Event von 3sec zu legen? Damit müßte es klappen.

Kommentar von roman am 27.12.2000 um 15:48

gibt es ein programm oder ähnliches mit dem man einen anderen rechner anpingen kann, z.b. alle 3 sec,und die empfagenen daten dann in einer statistik anzeigen lassen kann??