private void button1_Click(object sender, EventArgs e)
{
ConnectInternet();
}
private void ConnectInternet()
{
HttpWebResponse result = null;
try
{
System.Uri server = new Uri("http://www.sohu.com");
WebRequest req = WebRequest.Create(server);
result = (HttpWebResponse)req.GetResponse();
if (result.StatusCode == HttpStatusCode.OK)
{
this.lblMessage.Text = "你好!网络连通!";
}
}
catch (Exception ex)
{
this.lblMessage.Text = "正在连接,请稍候...";
ReLookForServer();
}
}
/// <summary>
/// 轮询服务器
/// </summary>
private void ReLookForServer()
{
TimerState s = new TimerState();
TimerCallback timerDelegate = new TimerCallback(CheckStatus);
System.Threading.Timer timer = new System.Threading.Timer(timerDelegate, s, 1000, 1000);
s.tmr = timer;
while (s.tmr != null)
Thread.Sleep(0);
}
/// <summary>
/// 时间轮询状态信息类
/// </summary>
class TimerState
{
public int counter = 0;
public System.Threading.Timer tmr;
}
/// <summary>
/// 时间轮询状态信息,只自动监测10次,如果超出10次以上视为不能连接成功!
/// </summary>
/// <param name="state"></param>
private void CheckStatus(Object state)
{
TimerState s = (TimerState)state;
s.counter++;
if (s.counter <= 10)
ConnectInternet();
else
{
this.lblMessage.Text = "";
this.lblMessage.Text = "对不起,网络不通!";
s.tmr.Dispose();
s.tmr = null;
}
}