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