using System;
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System.Threading;
using System.Net.Sockets;
using System.Net.NetworkInformation;
public class ThreadDemo
{
public static void Main()
{
List<Thread> tls = new List<Thread>();
System.Net.ServicePointManager.DefaultConnectionLimit = 20;//最大并发数,.net默认并发只有2个
for (int i = 0; i < 50; i++)
{
tls.Add(new Thread(new ThreadStart(test)));
tls[i].Name = "线程" + (i + 1);
tls[i].Start();
}
}
public static void test()
{
new RequestTest().GetRequest(Thread.CurrentThread.Name, "http://163.com");
}
}
public class RequestTest
{
System.Net.HttpWebRequest httpReq = null;
System.Net.HttpWebResponse httpRes = null;
/// <summary>
/// 通过WebRequest来访问网址,网址必须包含http:或https:
/// </summary>
/// <param name="threadName">当前线程</param>
/// <param name="url">要访问的网址</param>
public void GetRequest(string threadName, string url)
{
if (string.IsNullOrEmpty(url) || url.Length <= 0) return;
DateTime dt = DateTime.Now;
if (!url.Contains("."))
{
return;
}
if (!url.Contains("http://") && !url.Contains("https://"))
url = "http://" + url;
try
{
httpReq = (HttpWebRequest)WebRequest.Create(url);
httpReq.Proxy = null;//不使用代理 .NET4.0中的默认代理是开启的
httpReq.KeepAlive = false;//不建立持久性连接
httpReq.Timeout = 5000;//连接网址的超时时间
httpReq.ReadWriteTimeout = 5000;//读取网址内容的超时时间
httpRes = (HttpWebResponse)httpReq.GetResponse();
Console.WriteLine(threadName + " " + url + ":" + httpRes.StatusCode);
}
catch (Exception e)
{
Console.WriteLine(threadName + " " + url + " Error:" + e.Message);
}
finally
{
if (httpRes != null)
{
httpRes.Close();//关闭连接
}
if (httpReq != null)
{
httpReq.Abort();//中止请求
}
httpReq = null;
httpRes = null;
System.GC.Collect();//强制垃圾回收,并释放资源
}
}
}
转自:http://www.cnblogs.com/huangtailang/archive/2013/07/09/3180651.html