Reviewed by: Diana on 2018-07-01
Comprehensive set of internet components including Proxy, DNS, Trace Route, Ping/ICMP, WhoIs, IP Lookup, and Time
A set of .NET classes that makes the work of querying DNS servers for resource record types defined by RFC-1034 and RFC-1035, and performing domain registration with the WhoIs class more easily. In addition to supporting DNS and WhoIs features, the component also lets you easily find from which countries your visitors are coming from. This can help you prevent credit card fraud, automatically select language, and currency for your visitor and much more benefits. The package also includes TraceRoute and Time components which let you perform Internet Route Tracing to determine network delays and topology, and get exact time from and keep all the computers running your application synchronized with public time servers over the Internet.
Ultimate Netkit's Key Features
DNS Features
• Lookup for Resource Records - Host name to A Record (IP address), MX Record, etc. • Reversve lookup for PTR Record - IP address to host name • Supports Resource Records: A, A6, AAAA, AFSDB, ALL, CNAME, GPOS, HINFO, ISDN, KEY, MB, MD, MF, MG, MINFO, MR, MX, NS, NSAP, NSAPPTR, NULL, NXT, PTR, PX, RP, RT, SIG, SOA, SRV, TXT, WKS, X25. • Supports RFC-1034/RFC-1035 • Retrieve the list of available DNS servers • Send and receive DNS request and response messages • Support for IPv6, the next generation Internet protocol • 100% managed code written in C# • Support for .NET Full Framework, Xamarin iOS, Mac, Android, Mono, .NET CF, and .NET Core, Standard (will be available soon)
TraceRoute Features
• Instigates route tracing easily • Sets maximum hops • Includes complete hop information • Resolves IP addresses while performing Internet Route Tracing • Retrieves hops counts, router addresses and names, response time and Time To Live (TTL) • Fully supports RFC-792 • Echo Reply Message is fully parsed
WhoIs Features
• Fully compliant with RFC-954 • Specify the question to ask • Request domain registration, user, mailbox and related information
IP Lookup Features
• Easily find from which countries your visitors are coming from • Show country info and flag
Time (NTP) Features
• Supports the Network Time Protocol (RFC-1305) • Supports the Time Protocol (RFC-868) • Supports the Daytime Protocol (RFC-867) • Supports conversion between NTP time and .NET time • Supports both SNTP (version 3) and NTP(version 4) • Provides access to all NTP packet fields
What is DNS?
DNS (English Domain Name System - a system of domain names) is a computer distributed system for obtaining information about domains. It is most often used to obtain an IP address by the host name (computer or device), receiving information about mail routing, serving nodes for protocols in the domain (SRV record). A distributed DNS database is maintained using a hierarchy of DNS servers that communicate over a specific protocol.
What is WhoIs?
WHOIS is an application-level network protocol based on the TCP protocol (port 43). The main application is obtaining registration data about owners of domain names, IP-addresses and autonomous systems.
What is NTP?
NTP (English Network Time Protocol) is a network protocol for synchronizing internal clock of a computer with the use of networks with variable latency. The protocol was developed by David L. Mills, a professor at the University of Delaware, in 1985. The version for 2015 is NTPv4. NTP, based on the Marzullo algorithm, uses the UDP protocol for its work and takes into account the transmission time. The NTP system is extremely resistant to changes in the latency of the transmission medium. In version 4 it is able to achieve accuracy of 10 ms (1/100 sec) when working through the Internet, and up to 0.2 ms (1/5000 s) and better within local networks.
Creating project using the Netkit component
Let's create a simple WPF application using the Netkit component
We will need to add links to our project. Therefore, click on "Links" and select "Add link"

We will need to select such links - ComponentPro.Time.dll, ComponentPro.Common.dll, ComponentPro.TraceRoute.dll and ComponentPro.WhoIs.dll. Which, I remind, are in the Extensions.
Work with Code
As the example, we will query the time data using the NtpTimeClient class
NtpTimeClient ntpTimeClient = new NtpTimeClient(); WriteLine("Connecting to time server {0}...", cbxServer.Text); ntpTimeClient.ServerName = cbxServer.Text; NtpMessage m = ntpTimeClient.GetTime(); WriteLine("Server's time: {0}", DateTime.Now.Add(m.TimeOffset.ToTimeSpan())); WriteLine("Server's NTP Version: {0}", m.ProtocolVersion); WriteLine("Sent at: {0} UTC", m.OriginateTimestamp); WriteLine("Received at: {0} UTC", m.DestinationTimestamp); WriteLine("Server's Stratum: {0}", m.Stratum); WriteLine("Ntp Message Mode: {0}", m.Mode); WriteLine("Poll Interval: {0}", m.PollInterval);
As a result, the application will look like this:
Also consider another example using WhoIs. The code with all event handlers is shown below:
if (txtAddress.Text.Length == 0) { MessageBox.Show("Please enter a domain name to query"); return; } WhoIsClient domainWhoIsClient = new WhoIsClient(); if (txtWhoIsServer.Text.Length > 0) { // Reset the list of Whois servers. domainWhoIsClient.WhoIsServers.Clear(); // And use only the specified whois server. domainWhoIsClient.WhoIsServers.Add(new WhoIsServer(txtWhoIsServer.Text, 43, "*.*", "no match")); } else // Download the whois server from the resources in ComponentPro.WhoIs.dll domainWhoIsClient.LoadWhoIsServersFromResource(); txtInfo.Text = string.Empty; domainWhoIsClient.LookupCompleted += domainWhoIsClient_LookupCompleted; // Asynchronously perform a search. domainWhoIsClient.LookupAsync(txtAddress.Text);
And also look at the event handler domainWhoIsClient_LookupCompleted
private void domainWhoIsClient_LookupCompleted(object sender, ExtendedAsyncCompletedEventArgs e) { WhoIsClient domainWhoIsClient = (WhoIsClient)sender; if (e.Error != null) { Exception ex = e.Error; if (ex.InnerException != null) ex = ex.InnerException; MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Stop); } DomainLookupResult info = e.Result; if (info != null) { if (info.Result.Trim().Length == 0) MessageBox.Show("Response from the server is empty", "WhoIs", MessageBoxButton.OK, MessageBoxImage.Warning); else txtInfo.Text = info.Result; } else MessageBox.Show("No Domain Extension matches for this domain", "WhoIs", MessageBoxButton.OK, MessageBoxImage.Warning); }
As a result, the application will look like this:
Conclusions and recommendations
With a package like Netkit, which includes another 4 classes for working with the network and checking various addresses and domains, you will be able to do a lot of things in your application, because the libraries give you the freedom to create and support powerful functionality, literally for a small amount of code and simple architecture of classes. Let me remind you that the component also makes it easy to find out which countries your visitors come from. This can help you prevent credit card fraud, automatically choose the language and currency for your visitor and get much more benefits
If you have found a broken link, please contact us
|