Network Monitoring Program

We need a program written in C that can monitor weither a service is up through the internet. The program should include times required for the connection to the remote service...ie connect time, DNS lookup time, download time, total time...

The program should be able to actually talk to the remote service ie... connect to [url removed, login to view] and do a http get to assure the service is up rather than just trying to make a connection to the remote port. The program should be able to connect to multiple services: http, https, smtp, pop3, imap ... it must also be able to do both tcp or udp connections. The program should allow for various options to be passed on the command line, including url/ip, port, protocal, tcp/udp. In other words nothing should be hardcoded into the application. The program should print out the results to the screen. The web protocals should look at the error codes returned by the browser in order to determine if the system is up... ie 200 is up rest are down. Documentation is very key other developers will be modifying this base code.

The program should be able to run on a RedHat Linux machine and be compiled under gcc. This program should be very light on resources as I may scan over 500 different urls at the same time every 2 minutes in order to assure they are up. However, your program does not need to worry about how to accomplish this it is already written.

There have been a few questions so here is some updated information:

I would need the following protocals at least:

http

https

smtp

imap

pop

ftp

sftp

ssh

netbios

telnet

obviously some of these don't respond with a standard response so part of the program would just have to check opening the port to see if it is listening. Again depending on the type of port it is connecting to. In this case you should provide a way to do a SYN connection similar to NMAP -sS if you are familar with that program. By the way be sure that the port is not what determines what type of port scan you use. ie.. If I say it is http that may be running on a port like 7090 rather than the standard port 80. This program should have a timeout that is passed on the command line as well in seconds.

## Deliverables

1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.

2) Exclusive and complete copyrights to all work purchased. (No GPL, 3rd party components, etc.).