Network Tool Whois in C#

Introduction

'WHO-is' is a Network Tool or a Query. In general, it come in practice to get the hidden details about the Host like Domain Name, IP Address and details about the person/organization who is really hosting.

User-Interface Design

  1. 1 Combo Box
  2. 2 Text Box
  3. 1 Button
  4. 2 Label
  5. 1 Progress Bar

Note

Put your Combo Box, Text Box and Button inside a Group Box. Next, put a Multi-Line Text Box just aside that group box. And, rests are the Labels and Progress Bar which are not that tough to drag-drop from the toolbox.
After, you're designing effort may you get the result which look similar to the following window. 

Network-Tool-whois-1.jpg

Background  Details

1. Combo Box (cmbServer)

cmbServer contain three items you may add it using c# code or by its property window. Name it as cmbServer. Right now, I prefer Property Window

Network-Tool-whois-2.jpg
    
Click on 'Items' and add three values in individual line.

Network-Tool-whois-3.jpg

  • Whois.internic.net [Default]
  • Whois.ripe.net
  • Whois.arin.net

2. Text Box  (txtHostName)

Drag a text box and put in its corresponding location. It is as easy, as you have done earlier. Name it as txtHostName. From, here we get the host name. May be, http://google.com, http://c-sharpcorner.com or any thing.

Network-Tool-whois-4.jpg
                                           
3. Button (btnLookUp)

 Put a button on the form and name it as btnLookUp and Text must be Look Up or whatever you wish.

Network-Tool-whois-5.jpg
                                             
4. Multi-Line Text Box (txtxResponse)

In this TextBox we will store the fetched data from whois server. That's why, it must be multi line with Horizontal Bar. Name this control as txtxResponse.

Network-Tool-whois-6.jpg
                                
Now, there is need to create the text box as multi line. So, click on the little arrow on the right corner of the text box. And, check the MultiLine Text Box.

Network-Tool-whois-7.jpg
                                             
5. Progress Bar (progressbar1)

Put it just below the text box and rest labels and the picture box are left for you.
               
C# Code :

First, add some namespace.

using System.IO;

using System.Net.Sockets;
 
Then create some Reference variables in Form class,
       

TcpClient tcpWhois;

NetworkStream nsWhois;

BufferedStream bfWhois;

StreamWriter strmSend;

StreamReader strmRecive;
 
In Form() Constructor, Define Progress Bar values,

progressBar1.Minimum = 0;
progressBar1.Maximum = 100;
 
 In Form_Load() event,

Double Click on your active form.

Here, we define the default index of Combo Box.
 
cmbServer.SelectedIndex = 0;
 
Now, we will define some actual codes.

In LookUp Button, Click event has,
 

  tcpWhois = new TcpClient(cmbServer.SelectedItem.ToString(), 43);

// We assigned WHOis  Server(from comboBox) and its corresponding Port(43) to the TcpClient Constructor.

Next,

nsWhois = tcpWhois.GetStream(); // Setup the Stream of Tcp client using GetStream() method

bfWhois = new BufferedStream(nsWhois); // Initializing the Buffer

strmSend = new StreamWriter(bfWhois);

 strmSend.WriteLine(txtHostName.Text);

//Sending the Server & Host Name using StreamSend class

strmSend.Flush(); // Clear the buffer

txtxResponse.Clear(); // clear the text box

 try

 {

        // Turn to Recive the data from Server

        strmRecive = new StreamReader(bfWhois);

        string response;

        // variable, which 'll store the response from server.

        //Continue the LOOP till it comes to the end (null)     

         while ((response = strmRecive.ReadLine()) != null)

         {

              //at every response append to New line using "\r\n"

              txtxResponse.Text += response + "\r\n";

              //increase the value of Progress Bar :D

              if (progressBar1.Value < 100)

              progressBar1.Value += 10;

         }

      }

      catch

      {

           //FOUND any exception

           MessageBox.Show("WHOis Server Error :x","Error");

       }           

       catch

       {

            MessageBox.Show("No Internet Connection or Any other Fault", "Error");

       }

       //SEND THE WHO_IS SERVER ABOUT THE HOSTNAME

       finally

       {

          try

          {

              // Close the stream

              tcpWhois.Close();

         }

         catch

         {

               //DO nothing

         }

       }
 
At End

Ultimately we have a working window which takes the Host Name as Input and show the Whois Details about the Host.

Network-Tool-whois-8.jpg