投稿時間:2004/02/24(Tue) 14:52 投稿者名:FEE
Eメール:
URL :
タイトル:Re^3: pingの応答を返したい
IcmpSendEchoを使ってpingの応答時間を表示させたいのですが、「0」と表示してしまいます。 RoundTripTimeはLong型で宣言してあります。何が悪いのでしょうか…
Public Function Ping_Click(f_form As Object, msg_str As String) Dim hFile As Long ' handle Dim lRet As Long Dim lIPAddress As Long Dim strMessage As String Dim pOptions As ip_option_information Dim pReturn As icmp_echo_reply Dim iVal As Integer Dim lPingRet As Long Dim pWsaData As tagWSAData ' Dim msg_str As String '送信するメッセージのセット これは何でもよい。 strMessage = "Echo data" 'ソケットのオープン iVal = WSAStartup(&H101, pWsaData) 'IPアドレスを999.999.999.999の形式から10進数への変換 lIPAddress = inet_addr(txIPAddress) 'ハンドルの確保 hFile = IcmpCreateFile() 'TTLのセット 1 to 255の範囲で設定 pOptions.Ttl = 5 'pingパケットを流す。 lRet = IcmpSendEcho(hFile, lIPAddress, strMessage, Len(strMessage), pOptions, pReturn, Len(pReturn), PING_TIMEOUT) If lRet = 0 Then ' 戻り値0はエラー ' MsgBox "Pingは失敗しました。" ' f_form.Label4.Caption = "Pingは失敗しました。" f_form.Text2.Text = f_form.Text2.Text & "time=" & CStr(pReturn.RoundTripTime) & "ms " & "タイムアウト" & vbCrLf Else 'ステータスが何かあったらエラー If pReturn.Status <> 0 Then ' MsgBox "Pingは失敗しました。" ' f_form.Label4.Caption = "Pingは失敗しました。" f_form.Text2.Text = f_form.Text2.Text & "time=" & CStr(pReturn.RoundTripTime) & "ms " & "pingエラー" & vbCrLf Else ' MsgBox "Pingは成功しました。" ' f_form.Label4.Caption = "Pingは成功しました。" ' MsgBox "Pingは成功しました。" f_form.Text2.Text = f_form.Text2.Text & "time=" & CStr(pReturn.RoundTripTime) & "ms " & "ping成功" & vbCrLf End If End If 'ハンドルの開放 lRet = IcmpCloseHandle(hFile) 'ソケットのクローズ iVal = WSACleanup()
End Function
|