Click here to Skip to main content
15,891,184 members
Articles / Programming Languages / C#

.NET DUMeter clone

Rate me:
Please Sign up or sign in to vote.
4.86/5 (47 votes)
10 Feb 2003BSD4 min read 344.9K   7.4K   111  
A DUMeter clone, but with some better/different reporting features.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
	<head>
		<title></title>
		<meta content="Microsoft Visual Studio.NET 7.0" name="GENERATOR">
		<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
	</head>
	<body>
		<H2>Introduction</H2>
		<P>This is basically a DUMeter clone,&nbsp; but with some better/different 
			reporting features. Being on a dialup connection I like to see whats happening 
			to my bandwidth. I have done this UI to be as unobtrusive as possible. Full UI 
			customization and transparency. It will work on Win2k+ only as far as I am 
			aware.</P>
		<H2>Source Code</H2>
		<P>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 dont have to vote. Please note the 
			blank database <STRONG>is</STRONG> included with the source.</P>
		<H2>Usage</H2>
		<P>When running MyDUMeter for the first time the option dialog should popup that 
			allows you to select you 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.</P>
		<H3>Some UI tips:</H3>
		<UL>
			<LI>
			Mouse over on realtime graph shows bandwidth numbers. These numbers can allways 
			be shown via the Show Text menu.
			<LI>
			Clicking&nbsp;on a report will bring up a tooltip with some extra stats for 
			that "section".
			<LI>
			All windows can be moved by clicking and holding down the mouse.
			<LI>
				Double click realtime graph to show window border, the window can now be 
				resized. Double click again to hide border.</LI></UL>
		<H2>Known problems and facts</H2>
		<UL>
			<LI>
				When resizing the realtime graph, it&nbsp;goes on a acid trip. This is 
				intentional. Select the size you like, and let it be. This&nbsp;<STRONG>is now</STRONG>
			&nbsp;fixed.
			<LI>
				The average shown in the report's tooltip is the recorded average, in other 
				words if only one log entry was made at say 10kb/sec then the whole section 
				would reflect a 10kb/sec average. IMHO this is better than using a general 
				average.</LI></UL>
		<H2>Conclusion</H2>
		<P>I hope you find this utility handy. Any comments/suggestions welcome.</P>
		<H2>Updates</H2>
		<H3>1.1</H3>
		<UL>
			<LI>
			Fixed small calculation "bug" in report tooltip.
			<LI>
			Added better alignment in report.
			<LI>
				Added a TypeConverter for Machine name. Your PC can now be selected via 
				dropdownbox. Please recheck the interface, and make sure you have <STRONG>admin 
					rights on the PC you like to monitor</STRONG>. 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.</LI></UL>
		<H3>1.2</H3>
		<UL>
			<LI>
				A 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&nbsp;to do this is the following: Add the "file" as 
				embedded content to the project and add the code.</LI></UL>
		<P><pre>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 &gt; 0)
   {
      len = s.Read(buffer, 0, len);
      r.Write(buffer, 0, len);
   }
   r.Close();
   s.Close();
}</pre>
		<P></P>
		<UL>
			<LI>
			Fixed "Fixed small calculation "bug" in report tooltip.".
			<LI>
			MachineName "bug" is still there. Waiting for feedback.
			<LI>
				Some more report options and stats.</LI></UL>
		<H3>1.3</H3>
		<UL>
			<LI>
				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 
				realtime graph.</LI></UL>
		<H3>1.4</H3>
<UL>
			<LI>
				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. 
  
			<LI>
				Added much better resizing code. Redone the whole realtime graph painting.</LI></UL>
<H3>1.5</H3>
<UL>
  <LI>Thanx to Wilco B for pointing out&nbsp;a small problem. That has been 
  fixed now.</LI>
  <LI>Added very cool selection/highlighting feature for the report (see pic). 
  Just right click hold and drag.</LI></UL>
	</body>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

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


Written By
Software Developer
South Africa South Africa
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions