文号
t78211
阅读
14880
回复
20
收藏
8
C# 端口转发软件
2015/12/11
IP:山东
C# 端口转发软件 用途自己想,与我无关



static void Main(string[] args)
{
 
    TcpListene = new TcpListener(IPAddress.Parse("192.168.1.101"), 8790);//手机用的IP和端口 IP是你的电脑网卡的IP 端口随意
    TcpListene.Start();//开始监听
    new Task(() => 
    {
        while (true)
        {
            NewClient(TcpListene.AcceptTcpClient());//新客户端接入
        }
    }).Start();
}
 
void NewClient(TcpClient BrowseService)//新客户端接入
{
    TcpClient AgencyClient = new TcpClient();//链接到蓝灯代理服务器
    AgencyClient.Connect(IPAddress.Parse("127.0.0.1"), 8787);//蓝灯默认开放8787端口
 
    var BrowserStream = BrowseService.GetStream();
    var AgencyStream = AgencyClient.GetStream();
    new Task(() => 
    {
        byte[] buffer = new byte[64];
        int count = 0;
        while ((count = BrowserStream.Read(buffer, 0, buffer.Length)) != 0)
        {
            try { AgencyStream.Write(buffer, 0, count); }//浏览器来的数据发给蓝灯
            catch (Exception) { break; }
            //Console.WriteLine(string.Format("Beowser -> Agency:{0}", Encoding.Default.GetString(buffer,0,count)));//监视通信数据
        }
        BrowserStream.Close();
    }).Start();
 
    new Task(() => 
    {
        byte[] buffer = new byte[64];
        int count = 0;
        while ((count = AgencyStream.Read(buffer, 0, buffer.Length)) != 0)
        {
            try { BrowserStream.Write(buffer, 0, count); }//蓝灯来的的数据发给浏览器
            catch (Exception) { break; }
            //Console.WriteLine(string.Format("Agency -> Beowser:{0}", Encoding.Default.GetString(buffer, 0, count)));//监视通信数据
        }
        AgencyStream.Close();
    }).Start();
}

张静茹作者
11年0个月前IP:山东
800476
1楼
我不确定 说出具体使用方法是否安全   介绍梯子软件会被删帖吗?
我的用途是监视 浏览器通信数据
还有蓝灯开放127.0.0.1:8787
用软件转发到192.168.1.101:8790
然后手机设置这个代理地址 就可以了
引用
评论
11年0个月前IP:广东
800480
2楼
ssh转发用在一些国外的主机上面效率很低,这种转发还是很有用的
引用
评论
张静茹作者
11年0个月前IP:山东
800483
3楼
引用 smith:
ssh转发用在一些国外的主机上面效率很低,这种转发还是很有用的
用了之后 chrome的速度明显慢了很多,不知道是C#效率低 还是C#的socket效率低,还是别的问题
引用
评论
11年0个月前IP:黑龙江
800510
4楼
不用这么麻烦,LANTERN修改一下配置文件,可以在网卡地址上监听的,手机直接设代理就行了
引用
评论
张静茹作者
11年0个月前IP:山东
800519
5楼
引用 yaozhiyu:
不用这么麻烦,LANTERN修改一下配置文件,可以在网卡地址上监听的,手机直接设代理就行了
肿么改?没发现蓝灯的配置文件在哪
引用
评论
张静茹作者
11年0个月前IP:山东
800548
6楼
目前这版 效果不错,速度快很多


TcpListener TcpListene;
private void Form1_Load(object sender, EventArgs e)
{
    TcpListene = new TcpListener(IPAddress.Parse("192.168.1.101"), 8790);
    TcpListene.Start();//开始监听
    new Task(() => 
    {
        while (true)
        {
            NewClient(TcpListene.AcceptTcpClient());
        }
    }).Start();
}
long a = 0, b = 0, c = 0, d = 0, f = 0;
void NewClient(TcpClient BrowseService)//新客户端接入
{
    TcpClient AgencyClient = new TcpClient();//链接到代理服务器
    AgencyClient.Connect(IPAddress.Parse("127.0.0.1"), 8787);
    var BrowserStream = BrowseService.GetStream();
    var AgencyStream = AgencyClient.GetStream();
    a++;
    Task t1 = new Task(() => 
    {
        using (AgencyClient) using (BrowseService) using (AgencyStream) using (BrowserStream)
        {
            byte[] buffer = new byte[128];
            int count = 0;
            while (true)
            {
                try
                {
                    if ((count = BrowserStream.Read(buffer, 0, buffer.Length)) == 0) break;
                    AgencyStream.Write(buffer, 0, count); 
                } catch (Exception) { d++; break; }
                //Console.WriteLine(string.Format("Beowser -> Agency:{0}", Encoding.Default.GetString(buffer,0,count)));
            }
            b++; 
        }
    });
    t1.Start();
    Task t2 = new Task(() => 
    {
        using (AgencyClient) using (BrowseService) using (AgencyStream) using (BrowserStream)
        {
            byte[] buffer = new byte[128];
            int count = 0;
            while (true)
            {
                try
                {
                    if ((count = AgencyStream.Read(buffer, 0, buffer.Length)) == 0) break;
                    BrowserStream.Write(buffer, 0, count); 
                }
                catch (Exception) { f++; break; }
                //Console.WriteLine(string.Format("Agency -> Beowser:{0}", Encoding.Default.GetString(buffer, 0, count)));
            }
            c++; 
        }
    });
    t2.Start();
}
 
private void timer1_Tick(object sender, EventArgs e)
{
    this.Invoke(new Action(()=>{
        label1.Text = string.Format("全部创建socket:{0}个\r\n关闭了socket:{2}个\r\n现有socke:{1}个\r\nb={3}个\r\nc={4}\r\nd={5}\r\nf={6}", a, a - (b + c)/2, (b + c)/2, b, c, d, f);
    }));
}
引用
评论
11年0个月前IP:黑龙江
800553
7楼
引用 张静茹:
肿么改?没发现蓝灯的配置文件在哪
C:\Users\你的用户名\AppData\Roaming\Lantern目录下有一个文件lantern-2.0.10.yaml(可能版本不一样名字有点区别),用写字板打开(记事本打开不换行),有一行
addr: 127.0.0.1:8787
把地址127.0.0.1改成你的网卡地址就行了,另外注意防火墙要放开
引用
评论
张静茹作者
11年0个月前IP:山东
800556
8楼
引用 yaozhiyu:
C:\Users\你的用户名\AppData\Roaming\Lantern目录下有一个文件lantern-2.0.10.yaml(可能版本不一样名字有点区别),用写字板打开(记事本打开不换行),有一行
addr: 127.0.0.1:8...
谢谢
引用
评论
11年0个月前IP:河北
800638
9楼
噫
iptables -t nat -I PREROUTING -p tcp --dport 8080 -j DNAT --to 42.42.42.42:8787
iptables -t nat -I POSTROUTING -p tcp --dport 8787 -j MASQUERADE
引用
评论
张静茹作者
11年0个月前IP:山东
800648
10楼
引用 我说要有光:
iptables -t nat -I PREROUTING -p tcp --dport 8080 -j DNAT --to 42.42.42.42:8787
iptables -t nat -I POSTROUTING -p tcp -...
这是linux的命令吧
引用
评论
11年0个月前IP:广东
800930
11楼
iptables 的 nat 转发  广域网行么?
引用
评论
11年0个月前IP:江苏
801387
12楼
lantern推特里早就给画上安卓版客户端的大饼了。。。可是至今我们还没吃到。。。不知道什么时候真的给填上。。。
引用
评论
11年0个月前IP:黑龙江
801433
13楼
引用 luobinme:
iptables 的 nat 转发  广域网行么?
当然可以,上面这两句是同时做SNAT和DNAT,把发到本机8080的代理请求转发到42.42.42.42.8787的代理服务器上,
引用
评论
11年0个月前IP:黑龙江
801434
14楼
引用 我说要有光:
iptables -t nat -I PREROUTING -p tcp --dport 8080 -j DNAT --to 42.42.42.42:8787
iptables -t nat -I POSTROUTING -p tcp -...
还要改FORWARD吧
引用
评论
11年0个月前IP:四川
801436
15楼
引用 张静茹:
这是linux的命令吧
windows下好像可以用netsh实现端口转发
引用
评论
10年11个月前IP:北京
803250
16楼
支持UDP转发不
引用
评论
张静茹作者
10年11个月前IP:江苏
803287
17楼
引用 金坷居士:
支持UDP转发不
需要改
引用
评论
10年11个月前IP:辽宁
803501
18楼
无标题.png
呵呵在百度贴吧不会是同一个人吧
引用
评论
张静茹作者
10年11个月前IP:江苏
803567
19楼
引用 yaozhiyu:
呵呵在百度贴吧不会是同一个人吧
不是
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的