码迷,mamicode.com
首页 > Windows程序 > 详细

C#¶Ë¿Úת·¢Ó÷¨Ïê½â

时间:2017-12-14 03:31:50      阅读:438      评论:0      收藏:0      [点我收藏+]

标签:右键   default   pointer   开发   技术分享   tar   list   mes   listen   

±???êμày?2ê?á?C#???ú×a·¢ó?·¨?£·??í??′ó?ò1?′ó?ò2????£??ì?·???è???£o

?aà?ò?á′?ó3389μ?ê±oò?aày

ày×ó1£oá??óa?ú?÷μ?3389???úá?2?é?£?òò?a??·?·à?e???ò??í?1?×?á??T??£????ü·??êa?ú?÷μ???±e???ú±èè?80?£

ày×ó2£oá??óa?ú?÷μ???o??ùóD???ú??á?2?é?£¨??·????úí??ò??·à?e??í?1?×?á??T??£?£????ü1433é?襣?μ?ê???·??éò?á??ó??μ??3D????ú?£

?a??·?·¨£o

μúò??????òμ¥£???Dèòa3ìDò?ú??·??a80£???á??ó??80£?3ìDòê?μ?êy?Yoó£?·¢?íμ???±??úμ?3389£?í?ê±′ó??3389ê?μ?êy?Yoó·μ??μ????£3ìDò?íê?ò????D×a???£

using System;
using System.Net.Sockets;
using System.Threading;
namespace PortTransponder
{
  class Program
  {
    static void Main(string[] args)
    {
      TcpListener tl = new TcpListener(80);
//?aà??a??·??éò?±???á??ó2¢?ò?′±???ó?μ????ú
      tl.Start();
      while (true)
//?aà?±?D?ó??-?·£??éò??óê?2??1ò????í?§
//òò?a?ò·¢??????·t??óDê±ò??????ú2?DD?í??ò??????ú??á?
      {
//????μ?òa???íê?ò?μ?3ìDòê?μ???·¢?íμ?êy?Y°üoóá¢?ì?a2????3ì×??D×a
        try
        {
          TcpClient tc1 = tl.AcceptTcpClient();
//?aà?ê?μè′yêy?Y?ù?′DD??±?£?2??á100%??ó?cpu
          TcpClient tc2 = new TcpClient("localhost", 3389);
          tc1.SendTimeout = 300000;
//éè?¨3?ê±£?·??ò???ú??ò??±±???ó?£??′ê1ê§è¥á??ó
          tc1.ReceiveTimeout = 300000;
          tc2.SendTimeout = 300000;
          tc2.ReceiveTimeout = 300000;
          object obj1 = (object)(new TcpClient[] { tc1, tc2 });
          object obj2 = (object)(new TcpClient[] { tc2, tc1 });
          ThreadPool.QueueUserWorkItem(new WaitCallback(transfer), obj1);
          ThreadPool.QueueUserWorkItem(new WaitCallback(transfer), obj2);
        }
        catch { }
      }
    }
    public static void transfer(object obj)
    {
      TcpClient tc1 = ((TcpClient[])obj)[0];
      TcpClient tc2 = ((TcpClient[])obj)[1];
      NetworkStream ns1 = tc1.GetStream();
      NetworkStream ns2 = tc2.GetStream();
      while (true)
      {
        try
        {
//?aà?±?D?try catch£?·??òá??óò?μ??D??3ìDò?í±àà£á?
//òaê?μˉ3?′í?óìáê?è??ú?÷?′?????í??á?
          byte[] bt = new byte[10240];
          int count = ns1.Read(bt, 0, bt.Length);
          ns2.Write(bt, 0, count);
        }
        catch
        {
          ns1.Dispose();
          ns2.Dispose();
          tc1.Close();
          tc2.Close();
          break;
        }
      }
    }
  }
}

?£í?±????ùê???′ó?òμ?C#3ìDòéè??óD?ù°??ú?£

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  C#???ú×a·¢ó?·¨?ê?a

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23101.html






相关内容

C#¶Ë¿Úת·¢Ó÷¨Ïê½â

标签:右键   default   pointer   开发   技术分享   tar   list   mes   listen   

原文地址:http://www.cnblogs.com/paobuke/p/8035637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!