日期:2014-05-17  浏览次数:20782 次

[分享与散分]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