[分享与散分]Http 代理工具 实战 支持网页与QQ代理
作者:路过秋天
原文:http://www.cnblogs.com/cyq1162/archive/2010/09/21/1832329.html
有些公司不让员工上Q或封掉某些网站,这时候,干着急没办法,只能鄱墙。
如果上网搜代理IP,很少能用,用HTTP-Tunnel Client代理软件,免费的也是经常性的掉线。
正好手头上有N台服务器,如果直接在上面装个CCProxy,也显的太明显了。
于是自己写个代理软件放上去,一来包装一下好伪装,二来又有代理功能,看着挺好。
原理解说:
1:创建一个Socket进行本地端口监听-》一个死循环while语句
2:收到消息时,产生一个线程处理->多线程处理并发请求
3:产生一个新的Socket负责转发和接收
4:原来的Socket负责把新接收的消息发送回客户端
代码细说
说明:本次示例在控制台程序里运行。
一:Program.cs
1:简单函数原型
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Net.Sockets;
using System.Threading;
namespace TcpProxy
{
/// <summary>
/// by 路过秋天
/// http://www.cnblogs.com/cyq1162
/// </summary>
class Program
{
static void Main(string[] args)
{
Listen(808);//起始监听808和CCProxy一样。
}
static void Write(string msg)//简化消息输出
{
Console.WriteLine(msg);
}
static void Listen(int port)//开始监听
{
}
static void ReListen(TcpListener listener)//监听失败,需要重新换端口监听
{
}
}
}
2:开始监听
static void Listen(int port)//开始监听
{
Write("准备监听端口:" + port);
System.Net.IPAddress ipp = System.Net.IPAddress.Parse("0.0.0.0");//监听本地任意IP
TcpListener tcplistener = new TcpListener(ipp, port);
//端口复用,xp下可以复用[可抢占IIS80端口],win2003下无效。
tcplistener.Server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
try
{
tcplistener.Start();
}
&nb