ASp.Net day

Micro blog



About Satalaj

www.satalaj.com

The best inline translator

Live lookup to see what asp.net developers are searching




ASP.net monitor server

  In this article we will see how to monitor server up or down status                                                                                                                               kick it on DotNetKicks.com

  We will monitor HTTP, HTTPs servers, POP , SMTP servers, and FTP server.

Below is sample code which explain the rest. Each request send to monitor the server is online 5-6 line of code.


Add following code in to design view of your Default.aspx page

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:TextBox ID="TextBox1" runat="server" Width="184px"></asp:TextBox>

&nbsp;&nbsp;<asp:DropDownList ID="DropDownList1" runat="server">

<asp:ListItem Value="110">POP</asp:ListItem>

<asp:ListItem Value="25">SMTP</asp:ListItem>

<asp:ListItem Value="80">HTTP</asp:ListItem>

<asp:ListItem Value="443">HTTPS</asp:ListItem>

<asp:ListItem Value="21">FTP</asp:ListItem>

<asp:ListItem Value="995">SSLPOP</asp:ListItem>

<asp:ListItem Value="465">SSLSMTP</asp:ListItem>

</asp:DropDownList><br />

<br />

<br />

<br />

&nbsp;<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /><br />


</div>

</form>

</body>

</html>

 

Add below code into code behind file of default.aspx page


*********************************************************************************************************

Default.aspx.cs

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void Button1_Click(object sender, EventArgs e)

{


switch(DropDownList1.SelectedItem.Text)

{

case "POP" :

Monitor.ServerName = TextBox1.Text;

Monitor.Port = int.Parse(DropDownList1.SelectedValue);

Response.Write(Monitor.GetStreamResponse());

break;

case "HTTP" :

Response.Write(Monitor.GethttpResponse("http://" + TextBox1.Text));

break;

case "HTTPS" :

Response.Write(Monitor.GethttpResponse("https://" + TextBox1.Text));

break;

case "SMTP" :

Monitor.ServerName = TextBox1.Text;

Monitor.Port = int.Parse(DropDownList1.SelectedValue);

Response.Write(Monitor.GetStreamResponse());

break;

case "SSLPOP":

Monitor.ServerName = TextBox1.Text;

Monitor.Port = int.Parse(DropDownList1.SelectedValue);

Response.Write(Monitor.GetSecureStreamResponse());

break;

case "SSLSMTP":

Monitor.ServerName = TextBox1.Text;

Monitor.Port = int.Parse(DropDownList1.SelectedValue);

Response.Write(Monitor.GetSecureStreamResponse());

break;

}

}

}


Add monitor.cs class in to your app_Code folder

 

***************************************************************************************************

Monitor.cs


using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.IO;

using System.Net;

using System.Net.Sockets;

using System.Net.NetworkInformation;

using System.Net.Security;

/// <summary>

/// Summary description for Monitor

/// </summary>

public class Monitor

{

private static string _serverName = string.Empty;

private static int _port = 0; // int.MinValue;

static TcpClient tcpclient = null;

static NetworkStream ns = null;

static SslStream sslstream = null;

static StreamReader reader ;

static StreamWriter writer ;

public static string ServerName

{

get { return _serverName; }

set { _serverName = value; }

}

public static Int32 Port

{

get { return _port; }

set { _port = value; }

}


public static string GetStreamResponse()

{

try

{

tcpclient = new TcpClient();

tcpclient.SendTimeout = 10000;

//DateTime start = DateTime.Now.TimeOfDay;

tcpclient.Connect(ServerName, Port);

ns = tcpclient.GetStream();

reader = new StreamReader(ns);

string response = reader.ReadLine();

//DateTime end = DateTime.Now.TimeOfDay;

return response;

}

catch (Exception ex)

{

reader.Close();

ns.Close();

tcpclient.Close();

return ex.Message;

}

finally

{

ns.Close();

tcpclient.Close();

}

}

public static string GetSecureStreamResponse()

{

try

{

tcpclient = new TcpClient();

tcpclient.SendTimeout = 10000;

tcpclient.Connect(ServerName, Port);

sslstream = new SslStream(tcpclient.GetStream());

sslstream.AuthenticateAsClient(ServerName);

reader = new StreamReader(sslstream);

string str = reader.ReadLine();

return str;

}

catch (Exception ex)

{

reader.Close();

return ex.Message;

}

finally

{


sslstream.Close();

tcpclient.Close();

}

}

public static string GethttpResponse(string domainName)

{

try

{

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(domainName);

request.Timeout = 10000;

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

string str = response.StatusCode.ToString();

response.Close();

return str;

}

catch (Exception ex)

{

return ex.Message;

}

}

}


-Satalaj