TCP統計値を取得          <TOP>


GetTcpStatistics TCP統計値を取得
 

MIB_TCPSTATUS構造体からTCP(Transmission Control Protocol)統計値を取得します。

 

'================================================================
'= TCP統計値を取得
'=    (GetTcpStatistics.bas)
'================================================================
#include "Windows.bi"

Type MIB_TCPSTATS
    dwRtoAlgorithm As Long              'Algorithmの種類(MIB_TCP_RTO_・・・参照)
    dwRtoMin       As Long              'RTOの最小値(単位msec)
    dwRtoMax       As Long              'RTOの最大値(単位msec)
    dwMaxConn      As Long              '最大コネクション数(-1は可変長)
    dwActiveOpens  As Long              'コネクションを初期化している状態のコネクション数
    dwPassiveOpens As Long              'listenしている状態の数
    dwAttemptFails As Long              'コネクション確立失敗の数
    dwEstabResets  As Long              'Resetされたコネクションの数
    dwCurrEstab    As Long              '現在確立されているコネクション数
    dwInSegs       As Long              '受信したセグメント数
    dwOutSegs      As Long              '送信したセグメント数
    dwRetransSegs  As Long              '再送したセグメント数
    dwInErrs       As Long              '受信したエラーの数
    dwOutRsts      As Long              'RSTフラグが立った状態のセグメントを受け取った数
    dwNumConns     As Long              '現在ある全てのコネクションの数
End Type

#define MIB_TCP_RTO_OTHER 1             'Otherタイムアウトを示す
#define MIB_TCP_RTO_CONSTANT 2          'Constant Timeoutタイムアウト
#define MIB_TCP_RTO_RSRE 3              'MIL-STD-1778 Appendix Bタイムアウト
#define MIB_TCP_RTO_VANJ 4              'Van Jacobson's Algorithmタイムアウト
#define MIB_TCP_MAXCONN_DYNAMIC (-1&)   '接続最大数がダイナミック


' TCP統計値を取得
Declare Function Api_GetTcpStatistics& Lib "iphlpapi" Alias "GetTcpStatistics" (pStats As MIB_TCPSTATS)

Var Shared List1 As Object
Var Shared Button1 As Object

List1.Attach GetDlgItem("List1") : List1.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var mt As MIB_TCPSTATS
    Var Item As String
    Var Ret As Long

    'リストビューを初期化
    List1.Resetcontent

    'TCP統計値を取得
    Ret = Api_GetTcpStatistics(mt)

    'RtoAlgorithmを表示(タイムアウトによって分岐)
    Select Case mt.dwRtoAlgorithm

        'Otherのとき
        Case MIB_TCP_RTO_OTHER
            Item = "OTHER"

        'Constant Timeoutのとき
        Case MIB_TCP_RTO_CONSTANT
            Item = "CONSTANT"

        'MIL-STD-1778 Appendix Bのとき
        Case MIB_TCP_RTO_RSRE
            Item = "RSRE"

        'Van Jacobson's Algorithmのとき
        Case MIB_TCP_RTO_VANJ
            Item = "VANJ"

        'その他のとき
        Case Else
            Item = "UNKNOWN"
    End Select
    List1.AddString "RtoAlgorithm : " & Item

    'RtoMinを表示
    List1.AddString "RtoMin       : " & Trim$(Str$(mt.dwRtoMin))

    'RtoMaxを表示
    List1.AddString "RtoMax       : " & Trim$(Str$(mt.dwRtoMax))

    'MaxConnを表示
    'ダイナミックのときは
    If mt.dwMaxConn = MIB_TCP_MAXCONN_DYNAMIC Then
        Item = "dynamic"

    'ダイナミックではないときは
    Else
        Item = Trim$(Str$(mt.dwMaxConn))
    End If
    List1.AddString "MaxConn      : " & Item

    'ActiveOpensを表示
    Item = Trim$(Str$(mt.dwActiveOpens))
    List1.AddString "ActiveOpens  : " & Item

    'PassiveOpensを表示
    Item = Trim$(Str$(mt.dwPassiveOpens))
    List1.AddString "PassiveOpens : " & Item

    'AttemptFailsを表示
    Item = Trim$(Str$(mt.dwAttemptFails))
    List1.AddString "AttemptFails : " & Item

    'EstabResetsを表示
    Item = Trim$(Str$(mt.dwEstabResets))
    List1.AddString "EstabResets  : " & Item


    'CurrEstabを表示
    Item = Trim$(Str$(mt.dwCurrEstab))
    List1.AddString "CurrEstab    : " & Item

    'InSegsを表示
    Item = Trim$(Str$(mt.dwInSegs))
    List1.AddString "InSegs       : " & Item

    'OutSegsを表示
    Item = Trim$(Str$(mt.dwOutSegs))
    List1.AddString "OutSegs      : " & Item

    'RetransSegsを表示
    Item = Trim$(Str$(mt.dwRetransSegs))
    List1.AddString "RetransSegs  : " & Item

    'InErrsを表示
    Item = Trim$(Str$(mt.dwInErrs))
    List1.AddString "InErrs       : " & Item

    'OutRstsを表示
    Item = Trim$(Str$(mt.dwOutRsts))
    List1.AddString "OutRsts      : " & Item

    'NumConnsを表示
    Item = Trim$(Str$(mt.dwNumConns))
    List1.AddString "NumConns     : " & Item
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End