Je le ferai peut-être + tard, mais en attendant ce source, traduit d'un code VB, est bien pratique et fonctionne pour relever les stats réseau sur la machine locale.
Valable uniquement sous Windows.
Code : Tout sélectionner
Enumeration
#Window_Main
#Gadget_Editor
EndEnumeration
#MIB_TCP_STATE_CLOSED = 0
#MIB_TCP_STATE_LISTEN = 1
#MIB_TCP_STATE_SYN_SENT = 2
#MIB_TCP_STATE_SYN_RCVD = 3
#MIB_TCP_STATE_ESTAB = 4
#MIB_TCP_STATE_FIN_WAIT1 = 5
#MIB_TCP_STATE_FIN_WAIT2 = 6
#MIB_TCP_STATE_CLOSE_WAIT = 7
#MIB_TCP_STATE_CLOSING = 8
#MIB_TCP_STATE_LAST_ACK = 9
#MIB_TCP_STATE_TIME_WAIT = 10
#MIB_TCP_STATE_DELETE_TCB = 11
Structure MIB_IPSTATS
dwForwarding.l ; IP forwarding enabled Or disabled
dwDefaultTTL.l ; Default time-to-live
dwInReceives.l ; datagrams received
dwInHdrErrors.l ; received header errors
dwInAddrErrors.l ; received address errors
dwForwDatagrams.l ; datagrams forwarded
dwInUnknownProtos.l ; datagrams with unknown protocol
dwInDiscards.l ; received datagrams discarded
dwInDelivers.l ; received datagrams delivered
dwOutRequests.l
dwRoutingDiscards.l
dwOutDiscards.l ; sent datagrams discarded
dwOutNoRoutes.l ; datagrams For which no route
dwReasmTimeout.l ; datagrams For which all frags didn't arrive
dwReasmReqds.l ; datagrams requiring reassembly
dwReasmOks.l ; successful reassemblies
dwReasmFails.l ; failed reassemblies
dwFragOks.l ; successful fragmentations
dwFragFails.l ; failed fragmentations
dwFragCreates.l ; datagrams fragmented
dwNumIf.l ; number of interfaces on computer
dwNumAddr.l ; number of IP address on computer
dwNumRoutes.l ; number of routes in routing table
EndStructure
Structure MIB_TCPSTATS
dwRtoAlgorithm.l ; timeout algorithm
dwRtoMin.l ; minimum timeout
dwRtoMax.l ; maximum timeout
dwMaxConn.l ; maximum connections
dwActiveOpens.l ; active opens
dwPassiveOpens.l ; passive opens
dwAttemptFails.l ; failed attempts
dwEstabResets.l ; establised connections reset
dwCurrEstab.l ; established connections
dwInSegs.l ; segments received
dwOutSegs.l ; segment sent
dwRetransSegs.l ; segments retransmitted
dwInErrs.l ; incoming errors
dwOutRsts.l ; outgoing resets
dwNumConns.l ; cumulative connections
EndStructure
Structure MIB_UDPSTATS
dwInDatagrams.l ; received datagrams
dwNoPorts.l ; datagrams For which no port
dwInErrors.l ; errors on received datagrams
dwOutDatagrams.l ; sent datagrams
dwNumAddrs.l ; number of entries in UDP listener table
EndStructure
Structure MIBICMPSTATS
dwMsgs.l ; number of messages
dwErrors.l ; number of errors
dwDestUnreachs.l ; destination unreachable messages
dwTimeExcds.l ; time-to-live exceeded messages
dwParmProbs.l ; parameter problem messages
dwSrcQuenchs.l ; source quench messages
dwRedirects.l ; redirection messages
dwEchos.l ; echo requests
dwEchoReps.l ; echo replies
dwTimestamps.l ; timestamp requests
dwTimestampReps.l ; timestamp replies
dwAddrMasks.l ; address mask requests
dwAddrMaskReps.l ; address mask replies
EndStructure
Structure MIBICMPINFO
icmpInStats.MIBICMPSTATS ; stats For incoming messages
icmpOutStats.MIBICMPSTATS ; stats For outgoing messages
EndStructure
Global ip.MIB_IPSTATS
Global tcp.MIB_TCPSTATS
Global udp.MIB_UDPSTATS
Global icmp.MIBICMPINFO
Global EOL.s, TAB.s
EOL = Chr(13) + Chr(10)
TAB = Chr(9)
Procedure.s Stats()
txtOutput.s = ""
If GetIpStatistics_(ip)
txtOutput = txtOutput + "Unable to retrieve IP Statistics"
Else
txtOutput = txtOutput + "IP Statistics" + EOL + "==============================" + EOL
txtOutput = txtOutput + "IP forwarding enabled or disabled:" + TAB + Str(ip\dwForwarding) + EOL
txtOutput = txtOutput + "default time-to-live:" + TAB + Str(ip\dwDefaultTTL) + EOL
txtOutput = txtOutput + "datagrams received:" + TAB + Str(ip\dwInReceives) + EOL
txtOutput = txtOutput + "received header errors:" + TAB + Str(ip\dwInHdrErrors) + EOL
txtOutput = txtOutput + "received address errors:" + TAB + Str(ip\dwInAddrErrors) + EOL
txtOutput = txtOutput + "datagrams forwarded:" + TAB + Str(ip\dwForwDatagrams) + EOL
txtOutput = txtOutput + "datagrams with unknown protocol:" + TAB + Str(ip\dwInUnknownProtos) + EOL
txtOutput = txtOutput + "received datagrams discarded:" + TAB + Str(ip\dwInDiscards) + EOL
txtOutput = txtOutput + "received datagrams delivered:" + TAB + Str(ip\dwInDelivers) + EOL
txtOutput = txtOutput + "outgoing datagrams requested:" + TAB + Str(ip\dwOutRequests) + EOL
txtOutput = txtOutput + "outgoing datagrams discarded:" + TAB + Str(ip\dwRoutingDiscards) + EOL
txtOutput = txtOutput + "sent datagrams discarded:" + TAB + Str(ip\dwOutDiscards) + EOL
txtOutput = txtOutput + "datagrams for which no route:" + TAB + Str(ip\dwOutNoRoutes) + EOL
txtOutput = txtOutput + "datagrams for which all frags didn't arrive:" + TAB + Str(ip\dwReasmTimeout) + EOL
txtOutput = txtOutput + "datagrams requiring reassembly:" + TAB + Str(ip\dwReasmReqds) + EOL
txtOutput = txtOutput + "successful reassemblies:" + TAB + Str(ip\dwReasmOks) + EOL
txtOutput = txtOutput + "failed reassemblies:" + TAB + Str(ip\dwReasmFails) + EOL
txtOutput = txtOutput + "successful fragmentations:" + TAB + Str(ip\dwFragOks) + EOL
txtOutput = txtOutput + "failed fragmentations:" + TAB + Str(ip\dwFragFails) + EOL
txtOutput = txtOutput + "datagrams fragmented:" + TAB + Str(ip\dwFragCreates) + EOL
txtOutput = txtOutput + "number of interfaces on computer:" + TAB + Str(ip\dwNumIf) + EOL
txtOutput = txtOutput + "number of IP address on computer:" + TAB + Str(ip\dwNumAddr) + EOL
txtOutput = txtOutput + "number of routes in routing table:" + TAB + Str(ip\dwNumRoutes) + EOL
txtOutput = txtOutput + EOL
EndIf
If GetTcpStatistics_(tcp)
txtOutput = txtOutput + "Unable to retrieve TCP Statistics"
Else
txtOutput = txtOutput + "TCP Statistics" + EOL + "==============================" + EOL
txtOutput = txtOutput + "timeout algorithm:" + TAB + Str(tcp\dwRtoAlgorithm) + EOL
txtOutput = txtOutput + "minimum timeout:" + TAB + Str(tcp\dwRtoMin) + EOL
txtOutput = txtOutput + "maximum timeout:" + TAB + Str(tcp\dwRtoMax) + EOL
txtOutput = txtOutput + "maximum connections:" + TAB + Str(tcp\dwMaxConn) + EOL
txtOutput = txtOutput + "active opens:" + TAB + Str(tcp\dwActiveOpens) + EOL
txtOutput = txtOutput + "passive opens:" + TAB + Str(tcp\dwPassiveOpens) + EOL
txtOutput = txtOutput + "failed attempts:" + TAB + Str(tcp\dwAttemptFails) + EOL
txtOutput = txtOutput + "establised connections reset:" + TAB + Str(tcp\dwEstabResets) + EOL
txtOutput = txtOutput + "established connections:" + TAB + Str(tcp\dwCurrEstab) + EOL
txtOutput = txtOutput + "segments received:" + TAB + Str(tcp\dwInSegs) + EOL
txtOutput = txtOutput + "segment sent:" + TAB + Str(tcp\dwOutSegs) + EOL
txtOutput = txtOutput + "segments retransmitted:" + TAB + Str(tcp\dwRetransSegs) + EOL
txtOutput = txtOutput + "incoming errors:" + TAB + Str(tcp\dwInErrs) + EOL
txtOutput = txtOutput + "outgoing resets:" + TAB + Str(tcp\dwOutRsts) + EOL
txtOutput = txtOutput + "cumulative connections:" + TAB + Str(tcp\dwNumConns) + EOL
txtOutput = txtOutput + EOL
EndIf
If GetUdpStatistics_(udp)
txtOutput = txtOutput + "Unable to retrieve UDP Statistics"
Else
txtOutput = txtOutput + "UDP Statistics" + EOL + "==============================" + EOL
txtOutput = txtOutput + "received datagrams:" + TAB + Str(udp\dwInDatagrams) + EOL
txtOutput = txtOutput + "datagrams for which no port:" + TAB + Str(udp\dwNoPorts) + EOL
txtOutput = txtOutput + "errors on received datagrams:" + TAB + Str(udp\dwInErrors) + EOL
txtOutput = txtOutput + "sent datagrams:" + TAB + Str(udp\dwOutDatagrams) + EOL
txtOutput = txtOutput + "number of entries in UDP listener table:" + TAB + Str(udp\dwNumAddrs) + EOL
txtOutput = txtOutput + EOL
EndIf
If GetIcmpStatistics_(icmp)
txtOutput = txtOutput + "Unable to retrieve ICMP Statistics"
Else
txtOutput = txtOutput + "ICMP Statistics" + EOL + "==============================" + EOL
txtOutput = txtOutput + "***** In *****" + EOL
txtOutput = txtOutput + "number of messages:" + TAB + Str(icmp\icmpInStats\dwMsgs) + EOL
txtOutput = txtOutput + "number of errors:" + TAB + Str(icmp\icmpInStats\dwErrors) + EOL
txtOutput = txtOutput + "destination unreachable messages:" + TAB + Str(icmp\icmpInStats\dwDestUnreachs) + EOL
txtOutput = txtOutput + "time-to-live exceeded messages:" + TAB + Str(icmp\icmpInStats\dwTimeExcds) + EOL
txtOutput = txtOutput + "parameter problem messages:" + TAB + Str(icmp\icmpInStats\dwParmProbs) + EOL
txtOutput = txtOutput + "source quench messages:" + TAB + Str(icmp\icmpInStats\dwSrcQuenchs) + EOL
txtOutput = txtOutput + "redirection messages:" + TAB + Str(icmp\icmpInStats\dwRedirects) + EOL
txtOutput = txtOutput + "echo requests:" + TAB + Str(icmp\icmpInStats\dwEchos) + EOL
txtOutput = txtOutput + "echo replies:" + TAB + Str(icmp\icmpInStats\dwEchoReps) + EOL
txtOutput = txtOutput + "timestamp requests:" + TAB + Str(icmp\icmpInStats\dwTimestamps) + EOL
txtOutput = txtOutput + "timestamp replies:" + TAB + Str(icmp\icmpInStats\dwTimestampReps) + EOL
txtOutput = txtOutput + "address mask requests:" + TAB + Str(icmp\icmpInStats\dwAddrMasks) + EOL
txtOutput = txtOutput + "address mask replies:" + TAB + Str(icmp\icmpInStats\dwAddrMaskReps) + EOL
txtOutput = txtOutput + EOL
txtOutput = txtOutput + "***** Out *****" + EOL
txtOutput = txtOutput + "number of messages:" + TAB + Str(icmp\icmpOutStats\dwMsgs) + EOL
txtOutput = txtOutput + "number of errors:" + TAB + Str(icmp\icmpOutStats\dwErrors) + EOL
txtOutput = txtOutput + "destination unreachable messages:" + TAB + Str(icmp\icmpOutStats\dwDestUnreachs) + EOL
txtOutput = txtOutput + "time-to-live exceeded messages:" + TAB + Str(icmp\icmpOutStats\dwTimeExcds) + EOL
txtOutput = txtOutput + "parameter problem messages:" + TAB + Str(icmp\icmpOutStats\dwParmProbs) + EOL
txtOutput = txtOutput + "source quench messages:" + TAB + Str(icmp\icmpOutStats\dwSrcQuenchs) + EOL
txtOutput = txtOutput + "redirection messages:" + TAB + Str(icmp\icmpOutStats\dwRedirects) + EOL
txtOutput = txtOutput + "echo requests:" + TAB + Str(icmp\icmpOutStats\dwEchos) + EOL
txtOutput = txtOutput + "echo replies:" + TAB + Str(icmp\icmpOutStats\dwEchoReps) + EOL
txtOutput = txtOutput + "timestamp requests:" + TAB + Str(icmp\icmpOutStats\dwTimestamps) + EOL
txtOutput = txtOutput + "timestamp replies:" + TAB + Str(icmp\icmpOutStats\dwTimestampReps) + EOL
txtOutput = txtOutput + "address mask requests:" + TAB + Str(icmp\icmpOutStats\dwAddrMasks) + EOL
txtOutput = txtOutput + "address mask replies:" + TAB + Str(icmp\icmpOutStats\dwAddrMaskReps) + EOL
txtOutput = txtOutput + EOL
EndIf
ProcedureReturn txtOutput
EndProcedure
WindowXSize = 640
WindowYSize = 480
Quit = #FALSE
If OpenWindow(#Window_Main, 0, 0, WindowXSize, WindowYSize, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "NetStats")
AddKeyboardShortcut(#Window_Main, #PB_Shortcut_Escape, #PB_Shortcut_Escape)
If CreateGadgetList(WindowID())
EditorGadget (#Gadget_Editor, 10, 10, WindowXSize - 20, WindowYSize - 20, #PB_Container_Raised)
EndIf
SetGadgetText(#Gadget_Editor, Stats())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = #TRUE
Case #PB_Event_Menu
Select EventMenuID()
Case #PB_Shortcut_Escape
Quit = #TRUE
EndSelect
EndSelect
Until Quit
CloseWindow(#Window_Main)
EndIf
TerminateProcess_(GetCurrentProcess_(), 0)
End