Click here to Skip to main content
15,393,955 members
Articles / Programming Languages / C#
Posted 31 Jan 2003


111 bookmarked

.NET DUMeter clone

Rate me:
Please Sign up or sign in to vote.
4.86/5 (47 votes)
10 Feb 2003BSD4 min read
A DUMeter clone, but with some better/different reporting features.

Sample Image - mydumeter.gif


This is basically a DUMeter clone, but with some better/different reporting features. Being on a dialup connection, I like to see what's happening to my bandwidth. I have done this UI to be as unobtrusive as possible. Full UI customization and transparency is available. It will work on Win2K+ only as far as I am aware.

Source code

There was no big feat in doing this, so I wont bore you with the code. You can have a look. This is not really a programming article, but rather a very useful tool and replacement for DUMeter fans. You don't have to vote. Please note that the blank database is included with the source.


When running MyDUMeter for the first time, the option dialog should popup that allows you to select your interface. If anything goes wrong (for some reason), just delete the MyDUMeter.config file. Also make sure that the log.mdb (Access 2002 DB) is in the same directory and that you have at least MDAC 2.6 installed.

Some UI tips:

  • Mouse over on real-time graph shows bandwidth numbers. These numbers can always be shown via the Show Text menu.
  • Clicking on a report will bring up a tooltip with some extra stats for that "section".
  • All windows can be moved by clicking and holding down the mouse.
  • Double click real-time graph to show window border, the window can now be resized. Double click again to hide border.

Known problems and facts

  • When resizing the real-time graph, it goes on an acid trip. This is intentional. Select the size you like, and let it be. This is now fixed.
  • The average shown in the report's tooltip is the recorded average, in other words if only one log entry was made at say 10 kb/sec, then the whole section would reflect a 10 kb/sec average. IMHO this is better than using a general average.


I hope you find this utility handy. Any comments/suggestions welcome.


  • 1.1
    • Fixed small calculation "bug" in report tooltip.
    • Added better alignment in report.
    • Added a TypeConverter for machine name. Your PC can now be selected via dropdown box. Please recheck the interface, and make sure you have admin rights on the PC you like to monitor. A bit problematic using primitive remote debugging. I have no extra Windows PC on my network, so I had to send several versions to someone with no .NET knowledge to "debug" it. But it seems to work now.
  • 1.2
    • An empty access database is now embedded in the assembly. It will check for an existing database on start. The template database is now included with the source zip. All you need to do is the following: Add the "file" as embedded content to the project and add the code.
      if (!(File.Exists("log.mdb")))
         Stream s = 
         Stream r = File.Create("log.mdb");
         int len = 8192;
         byte[] buffer = new byte[len];
         while (len > 0)
            len = s.Read(buffer, 0, len);
            r.Write(buffer, 0, len);
    • Fixed "Fixed small calculation "bug" in report tooltip.".
    • MachineName "bug" is still there. Waiting for feedback.
    • Some more report options and stats.
  • 1.3
    • Added a pinger. Thank to Saurabh Nandu (or the original person who wrote it, there seems to be many people taking ownership of the code) for the base code. It will ping your desired host every 500ms and the text will displayed on the real-time graph.
  • 1.4
    • Added some more options. Ping interval and an option to hide the real-time graph when the connection goes idle. The graph will popup once the connection becomes non-idle.
    • Added much better resizing code. Redone the whole real-time graph painting.
  • 1.5
    • Thanx to Wilco B for pointing out a small problem. That has been fixed now.
    • Added very cool selection/highlighting feature for the report (see pic). Just right click hold and drag.
  • 1.6
    • Fixed many small cosmetic "bugs".
    • And thanx to Wilco B for pointing out the same problem in real-time graph.
  • 1.7
    • Many new cosmetic/stats features in Report. Selection can be zoomed into.
    • Real time graph can now be adjusted with mouse wheel (require wheel click to activate/deactivate). Shows a sluggish OSD.
    • Fixed a bug where focus will be stolen from the active window if real-time graph pops up when connection goes non-idle.
    • Removed the width constraint on the report. It was not really necessary at all. :)
  • 1.8
    • Added suggestion made by Kant.
    • Added make.bat for command line building (makes debug build).
    • Made all threads running at lower priority. Should help with CPU usage.


This article, along with any associated source code and files, is licensed under The BSD License


About the Author

Software Developer
South Africa South Africa
No Biography provided

Comments and Discussions

GeneralRe: Unhandled exception..Invalid Parameter used Pin
leppie20-Feb-03 6:33
Memberleppie20-Feb-03 6:33 
GeneralCool suggestion Pin
Diego Mijelshon12-Feb-03 7:55
MemberDiego Mijelshon12-Feb-03 7:55 
GeneralRe: Cool suggestion Pin
leppie12-Feb-03 8:11
Memberleppie12-Feb-03 8:11 
GeneralRe: Cool suggestion Pin
leppie12-Feb-03 9:57
Memberleppie12-Feb-03 9:57 
GeneralRe: Cool suggestion Pin
leppie20-Feb-03 6:37
Memberleppie20-Feb-03 6:37 
GeneralMachineName on a NT Domain Pin
swythan11-Feb-03 23:29
Memberswythan11-Feb-03 23:29 
GeneralRe: MachineName on a NT Domain Pin
leppie12-Feb-03 6:17
Memberleppie12-Feb-03 6:17 
GeneralRe: MachineName on a NT Domain Pin
Eric Lapouge12-Feb-03 11:00
MemberEric Lapouge12-Feb-03 11:00 

I was looking on that thread (and many others!) while back from travel. Looks like (at least a little...) a bit as a Unicode thing...


EricBig Grin | :-D
GeneralRe: MachineName on a NT Domain Pin
Peter Sjöström20-Feb-03 3:07
MemberPeter Sjöström20-Feb-03 3:07 
GeneralRe: MachineName on a NT Domain Pin
Matt Newman11-Dec-03 15:35
MemberMatt Newman11-Dec-03 15:35 
GeneralVery good Pin
Kant10-Feb-03 16:35
MemberKant10-Feb-03 16:35 
GeneralRe: Very good Pin
leppie11-Feb-03 5:59
Memberleppie11-Feb-03 5:59 
GeneralRe: Very good Pin
Kant13-Feb-03 8:06
MemberKant13-Feb-03 8:06 
GeneralRe: Very good Pin
leppie13-Feb-03 8:34
Memberleppie13-Feb-03 8:34 
GeneralRe: Very good Pin
Kant13-Feb-03 12:11
MemberKant13-Feb-03 12:11 
QuestionHow to do this in C++ Pin
OddArne10-Feb-03 9:37
MemberOddArne10-Feb-03 9:37 
AnswerRe: How to do this in C++ Pin
leppie10-Feb-03 10:11
Memberleppie10-Feb-03 10:11 
GeneralRe: How to do this in C++ Pin
Anonymous19-Apr-03 0:11
MemberAnonymous19-Apr-03 0:11 
GeneralRe: How to do this in C++ Pin
leppie19-Apr-03 1:55
Memberleppie19-Apr-03 1:55 
Generalgood job Pin
truefalse9-Feb-03 14:27
Membertruefalse9-Feb-03 14:27 
GeneralRe: good job Pin
leppie10-Feb-03 10:13
Memberleppie10-Feb-03 10:13 
GeneralWin2k error on startup Pin
Rentier8-Feb-03 20:47
MemberRentier8-Feb-03 20:47 
GeneralRe: Win2k error on startup Pin
leppie8-Feb-03 21:06
Memberleppie8-Feb-03 21:06 
GeneralRe: Win2k error on startup Pin
Rentier9-Feb-03 5:52
MemberRentier9-Feb-03 5:52 
GeneralException Pin
Wilco B.3-Feb-03 6:50
MemberWilco B.3-Feb-03 6:50 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.