• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

Network Tools

For CPU, whatever the system spits out.
For RAM, the total installed.

I know that it will slow the scans down as you add more, but what exactly is the goal of you app if not to give someone what they are looking for. Speed is not everything, my friend.

This app that you have written is one of the finest (and fastest) I've seen. You don't want to create an entire asset management tool, but for System Admins the things I suggested make life a lot easier. Perhaps in a future version you could make it possible to select the data you want to see from various functions. The more info, the slower, but that is a decision the user of the app can make.

The reason that I keep adding little tidbits here and there is as a IT Manager I can't find a program that does what yours accomplishes, and the ones' that come close are nowhere near as fast. Perhaps it is a bit of selfish ambition, but I am on the verge of dumping all of my other network utilities in favor of yours if you can just add a few more things.

Keep going my friend, this app is a Godsend for getting network information quickly.

The final thing I ask is for a network monitor thread that will find all of the currently connected devices and in real time will tell me when a device joins in/drops off the network.

Not to much to ask is it? ;)
 
It was running over a minute but I added some code that makes it check once for WMI functionality and if it fails that test, it discontinues the rest of the WMI work for that IP. Doing that means it's only a few seconds slower than only using WMI to get the host name.

Dns.GetHostEntry takes about 16 seconds and any WMI work adds an additional 16 seconds (~32 seconds for both). The question is: Should I remove all WMI code from Intranet Scan and Intranet Scan (Sorted) and leave WMI to Advanced? That means you'll mostly only see IPs on domain-controlled networks but you'll have that data in under 20 seconds. Advanced works best in domain-controlled environments anyway because it accepts WMI requests making it worth the extra time.


The final thing I ask is for a network monitor thread that will find all of the currently connected devices and in real time will tell me when a device joins in/drops off the network.
That will have to wait for a GUI and it would also have to be constantly running it (just the pings) to find new/dropped devices.


1.7 uploaded with Intranet Scan (Advanced)
 
Last edited:
If you don't mind, leave it how it is for the moment. I would like to test it at work where I have a lot more machines (both Windows and non-Windows) to do some timing tests.

Here at home I have 1 Windows machine, 1 Lynksys router and 1 NAS device.
It took 13.015 seconds to scan the network in IS(Adv).

Real time monitoring:
If I'm not mistaken, you don't need to send the 32 byte array with ping if you only are looking for a reply and don't care about times. If you loop through the address range and send one ping per second, you will have scanned the entire network for new/dropped machines in approx. 5 minutes (4.25 minutes to be a little more accurate).
Knowing about new/dropped machines ever 5 mintes is acceptable to me. It would create minimal network traffic and since you could run it in a single thread, it would put hardly any load on the machine that's running it.
 
Just had a thought. Don't machines send out a broadcast packet of some sort at some interval?
Could RTM be done just using a listener?
 
If I'm not mistaken, you don't need to send the 32 byte array with ping if you only are looking for a reply and don't care about times. If you loop through the address range and send one ping per second, you will have scanned the entire network for new/dropped machines in approx. 5 minutes (4.25 minutes to be a little more accurate).
Knowing about new/dropped machines ever 5 mintes is acceptable to me. It would create minimal network traffic and since you could run it in a single thread, it would put hardly any load on the machine that's running it.
I'm pretty sure ICMP needs some data otherwise the packet will be destroyed.

Again, I'm not going to do anything that lasts longer than about 30 seconds without a GUI which can be updated on the fly.


Just had a thought. Don't machines send out a broadcast packet of some sort at some interval?
Could RTM be done just using a listener?
I doubt it. Routers/managed switches check in with IP addresses to see if there is someone sitting there but from that, you'll only get the router/switch IP that is making the request. You have to go to the router/switch and request the full list which, I doubt that is even information it readily releases (needs details).
 
I'm pretty sure ICMP needs some data otherwise the packet will be destroyed.

From the MSDN page on the Ping Class:
Code:
You can also specify any of the following types of information:

    -Data to accompany the request. [b]Specifying buffer[/b] allows you to learn the amount of time required for a packet of a particular size to travel to and from the remote host and the maximum transmission unit of the network path. (See the Send or SendAsync overloads that take a buffer parameter.)

Looks like the buffer is optional the way the info is written. Especially since you can call the Ping.Send() Method with the IPAddress as the only parameter, and also with only the IPAddress and Timeout

Again, I'm not going to do anything that lasts longer than about 30 seconds without a GUI which can be updated on the fly.
I understand. I was just tossing out random thoughts. :)

I doubt it. Routers/managed switches check in with IP addresses to see if there is someone sitting there but from that, you'll only get the router/switch IP that is making the request. You have to go to the router/switch and request the full list which, I doubt that is even information it readily releases (needs details).

How does "Network" in Windows Explorer know what machines are available?
Can't be from the server only, as it updates in workgroups (domainless nets) too.
 
From the MSDN page on the Ping Class:
Code:
Looks like the buffer is optional the way the info is written. Especially since you can call the Ping.Send() Method with the IPAddress as the only parameter, and also with only the IPAddress and Timeout[/QUOTE]
Most of the ARP (Advanced Resolution Protocol) traffic on my network appears to not have any message, just a header.  I can try removing the bytes on Intranet Scan...

Edit: It already wasn't sending any bytes on the Intranet Scans.


[quote="Kreij, post: 1589255"]How does "Network" in Windows Explorer know what machines are available?
Can't be from the server only, as it updates in workgroups (domainless nets) too.[/QUOTE]
"net view" uses an SMB (Send Message Block) protocol which goes straight to the domain computer on the network.  I'm pretty sure "net view" works using Terminal Services.

I captured my network activity for a while and 2:1 ratio are the router asking who has the IP address.  Occassionally, one compter would ask another computer/printer if it was still there.  Like my Server just asked my computer if it was there and my computer responded.

Opening My Network Places causes a swarm of SMB protocol activity.


Edit: I think all it does is occassionally check if known devices are still present.  It won't find new devices until it is ordered to search (via SMP or ICMP).
 
Last edited:
Here's a pic of the NetTool 2.0 Ping prototype:
prototype.png

Everything you see there works.

You can click on the column headers to sort them by the column. It automatically sizes the columns to the content.

The same GUI will be used for all tests. Only the details on the left and the view on the right will change between tests. It should be possible to run multiple tests concurrently.
 
Gui looks great!! Except the "Start" Button is a little small :D
I really like the use of the PropertyGrid. Are you going to use tabs for the various functions, or repaint the windows with the desired information?

I ran IS(Adv) here at work. If found 47 devices on the network (both Windows and non-Windows) in 46.14 seconds.

I expected it to take a couple of minutes. Superb job, Mr. FordGT :toast:
 
Gui looks great!! Except the "Start" Button is a little small :D
I really like the use of the PropertyGrid. Are you going to use tabs for the various functions, or repaint the windows with the desired information?
It is currently based on a UserControl so I could do either. I'm leaning towards a TabControl. I have no idea when I'll get around to finishing it.


The only downside is you can't do the same test more than once without losing the previous test.


So are we pretty much done making changes to 1.#?
 
Last edited:
The only downside is you can't do the same test more than once without losing the previous test.

There's always a way. lol

So are we pretty much done making changes to 1.#?

Works fine for me, and I can't think of any fancy, new features at the moment.
 
Last edited:
There's always a way. lol
It would make sorting near impossible. :(


Works fine for me, and I can't think of any fancy, new features at the moment.
Yay! :D *takes a break*


WHERE IS THE NetTool 2.0 SECRET DOWNLOAD LOCATION?!?!?

What a tease you are...


WHERE
IS
THE
SECRET
DOWNLOAD
LOCATION?
http://www.youtube.com/watch?v=ScA7PhDJPJE
Somewhere near Fort Knox, on the darkside of the sun, or my server. XD

I saw that video before too. It's fenneh! :roll:


Trace Route is done:
traceroute.png


And yeah, it gets all the hostnames that are available in about 2 seconds. There is a long delay for those it can't get...

I'll try to get one done per day, less Wednesday (dentist appointment :cry:).
 
Yay! :D *takes a break*

I'll try to get one done per day, less Wednesday (dentist appointment :cry:).

Doesn't sound like much of a break to me :eek:

Take a few of days off, Ford, that will give us a chance to play around with 1.x.x and come up with lots of ideas for 2.0 :p

Let us know when you want start testing 2.0.
I just started a new super secret project, but I always have time do some software QA for my coding friends. :toast:

Maybe one of these days, all of us can get together at my place to share our humourous coding/IT stories and consume many of our favorite libations. I'm sure that if I told my wife that a bunch of coding/computer geeks were coming over for the weekend, she would find a reason to vacate the premises and we could run amock. :roll:
 
About the only thing that doesn't change between 1 and 2 is the main looper code. For instance, both Trace Routes combined had three handles (trace route, trace route advanced monitor, trace route advanced). This new one has five (trace route, error, working, complete, host name).
 
Intranet Scan done:
intranetscan.png


It updates the various fields as it gets it.

Again, it is sortable.
 
I notice from you pic that you have no fields filled in for necessary. ?

What does the hide button hide?

It's also interesting that the internet can took a little over 35 seconds on your net to find 5 devices and a little of 46 seconds on my work net to find 47 devices. It looks like the additional information is not causing much of a slowdown in result times.
 
I notice from you pic that you have no fields filled in for necessary. ?
IPAddress = first address your computer returns
ScanRange = 1-255

You only need to fill in IP Address if, for instance, you have more than one network cards or a specific loopback address (e.g. IPv6) you want to try.


What does the hide button hide?
The menu on the left (Start button and the PropertyGrid).


It's also interesting that the internet can took a little over 35 seconds on your net to find 5 devices and a little of 46 seconds on my work net to find 47 devices. It looks like the additional information is not causing much of a slowdown in result times.
If I disable all WMI features, it takes about 16 seconds. That test in the picture has all WMI features enabled.


I didn't make Intranet Scan update on regulat intervals yet. I forgot to do that.
 
IPAddress = first address your computer returns
ScanRange = 1-255

You only need to fill in IP Address if, for instance, you have more than one network cards or a specific loopback address (e.g. IPv6) you want to try.

I assumed that, but having the properties under "necessary" would make one think they are required when they are optional.

If I disable all WMI features, it takes about 16 seconds. That test in the picture has all WMI features enabled.


I didn't make Intranet Scan update on regulat intervals yet. I forgot to do that.

IS runs a lot quicker on my net also without the WMI features. What surprised me is that it does not seem to make a whole lot of difference if you have 5 or 50 WMI devices. The scan, with WMI features enabled, is still under a minute.
 
I assumed that, but having the properties under "necessary" would make one think they are required when they are optional.
Ah, yeah. I'll change it. (fixed)



IS runs a lot quicker on my net also without the WMI features. What surprised me is that it does not seem to make a whole lot of difference if you have 5 or 50 WMI devices. The scan, with WMI features enabled, is still under a minute.
Either my switch or my router doesn't like what I'm doing. It's not a big deal--just people will get different performance with it.

If WMI fails once, it stops trying WMI tasks. For instance, if it failed to get the WMI host name, it won't try to get processor, OS, and memory. The idea is that either the device is allowing access to WMI or it isn't. I think most of the time actually comes from timeouts and not actually doing work. Limiting queries that will most likely cause a timeout, therefore, vastly reduces the execution time.


I'll add a ManuallyStop option (if true, will run until the user stops it).
 
Either my switch or my router doesn't like what I'm doing. It's not a big deal--just people will get different performance with it.

At work I have everything running through Dell gigabit switches. All of the cabling is 350Mhz capable but many of the machines are only running at 100Mhz and some 10Mhz.
Here at home, my switch is a Lynksys router and 3 device. Both are within approx 10 seconds in total execution time.

If WMI fails once, it stops trying WMI tasks. For instance, if it failed to get the WMI host name, it won't try to get processor, OS, and memory. The idea is that either the device is allowing access to WMI or it isn't.

Makes sense not to try for more if you can't get less.

I think most of the time actually comes from timeouts and not actually doing work. Limiting queries that will most likely cause a timeout, therefore, vastly reduces the execution time.

I agree. In all the tests I have done with WMI, the returns are pretty fast unless there is a timeout. The other key is that you are running these in seperate threads, so If it takes 15 seconds to timeout and you are running 10 threads, you are not looking at 150 seconds, but 15 for each thread.

Al in all, very nice my friend :toast:
 
help->about can still be anonymous but owned, e.g.
Capture031.png
 
Instead of "ManuallyStop," it is "ScanInterval" and it is now implemented and works. It puts parenthesis around the name and if the parenthesis aren't removed, the device is no longer responding. It does a full scan on those intervals (no less than 30 seconds between) so it will find and get all the selected info for those devices just as doing another scan would. It also updates instead of clearing the list.
 
I'm looking forward to testing the new stuff !!
 
I could release a beta. The version number won't be incrementing with each release though.
 
Back
Top