Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

.NET DUMeter clone

0.00/5 (No votes)
10 Feb 2003 6  
A DUMeter clone, but with some better/different reporting features.

Sample Image - mydumeter.gif

Introduction

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.

Usage

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.

Conclusion

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

Updates

  • 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 = 
           Assembly.GetExecutingAssembly().GetManifestResourceStream
                                               ("MyDUMeter.log.mdb");
         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);
         }
         r.Close();
         s.Close();
      }
    • 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.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here