Esempio n. 1
0
 /// <summary>
 /// 清理
 /// </summary>
 void close()
 {
     if (Tcp_Client != null)
     {
         try
         {
             Program.PrintLog(string.Format("已断开客户端{0}的连接", Tcp_Client.Client.RemoteEndPoint));
             Client_Stream.Close();
             Tcp_Client.Close();
             Tcp_Client = null;
         }
         catch (NullReferenceException) {
         }
     }
     if (Tcp_Proxy != null)
     {
         try
         {
             Program.PrintLog(string.Format("已断开代理端{0}的连接", Tcp_Proxy.Client.RemoteEndPoint));
             Proxy_Stream.Close();
             Tcp_Proxy.Close();
             Tcp_Proxy = null;
         }
         catch (NullReferenceException) {
         }
     }
 }
Esempio n. 2
0
 public TCP_Server(TcpClient Tcp_Client, TcpClient Tcp_Proxy)
 {
     try
     {
         TCP_Proxy     = Tcp_Proxy;
         TCP_Client    = Tcp_Client;
         Client_Stream = TCP_Client.GetStream();
         Proxy_Stream  = TCP_Proxy.GetStream();
         Client_Stream.BeginRead(Client_Data, 0, Data_Size, TCP_Client_Receive, null);
         Proxy_Stream.BeginRead(Proxy_Data, 0, Data_Size, TCP_Proxy_Receive, null);
         DataHandle.WriteLog($"开启对{TCP_Client.Client.RemoteEndPoint}的TCP代理隧道");
     }
     catch (SocketException)
     {
         close();
     }
 }
Esempio n. 3
0
        /// <summary>
        /// 代理端接收数据回调
        /// </summary>
        /// <param name="ar"></param>
        private void Proxy_Receive(IAsyncResult ar)
        {
            try
            {
                int Size = Proxy_Stream.EndRead(ar);

                if (Size > 0)
                {
                    Socks_Send(Client_Stream, Proxy_Data.Take(Size).ToArray());
                    Proxy_Stream.BeginRead(Proxy_Data, 0, Data_Size, P_Read_Delegate, null);
                }
                else
                {
                    close();
                }
            }
            catch {
                close();
            }
        }
Esempio n. 4
0
 public Socks_Server(TcpClient TcpClient, TcpClient TcpProxy)
 {
     try
     {
         Client_Data     = new byte[Data_Size];
         Proxy_Data      = new byte[Data_Size];
         Tcp_Proxy       = TcpProxy;
         Tcp_Client      = TcpClient;
         Client_Stream   = Tcp_Client.GetStream();
         Proxy_Stream    = Tcp_Proxy.GetStream();
         dataHandle      = new DataHandle();
         C_Read_Delegate = new AsyncCallback(Client_Receive);
         P_Read_Delegate = new AsyncCallback(Proxy_Receive);
         Client_Stream.BeginRead(Client_Data, 0, Data_Size, C_Read_Delegate, null);
         Proxy_Stream.BeginRead(Proxy_Data, 0, Data_Size, P_Read_Delegate, null);
     }
     catch (SocketException) {
         close();
     }
 }
Esempio n. 5
0
 /// <summary>
 /// 代理端接收数据回调
 /// </summary>
 /// <param name="ar"></param>
 private void TCP_Proxy_Receive(IAsyncResult ar)
 {
     try
     {
         byte[] Data = DataHandle.En_Bytes(Proxy_Data.Take(Proxy_Stream.EndRead(ar)).ToArray());
         if (Data.Length > 0)
         {
             TCP_Socks_Send(Client_Stream, Data);
             Proxy_Stream.BeginRead(Proxy_Data, 0, Data_Size, TCP_Proxy_Receive, null);
         }
         else
         {
             close();
         }
     }
     catch
     {
         close();
     }
 }
Esempio n. 6
0
 public TCP_Server(TcpClient Tcp_Client, TcpClient Tcp_Proxy)
 {
     try
     {
         Client_Data     = new byte[Data_Size];
         Proxy_Data      = new byte[Data_Size];
         TCP_Proxy       = Tcp_Proxy;
         TCP_Client      = Tcp_Client;
         Client_Stream   = TCP_Client.GetStream();
         Proxy_Stream    = TCP_Proxy.GetStream();
         C_Read_Delegate = new AsyncCallback(TCP_Client_Receive);
         P_Read_Delegate = new AsyncCallback(TCP_Proxy_Receive);
         Client_Stream.BeginRead(Client_Data, 0, Data_Size, C_Read_Delegate, null);
         Proxy_Stream.BeginRead(Proxy_Data, 0, Data_Size, P_Read_Delegate, null);
         DataHandle.WriteLog(string.Format("开启对{0}的TCP代理隧道", TCP_Client.Client.RemoteEndPoint));
     }
     catch (SocketException)
     {
         close();
     }
 }
Esempio n. 7
0
 /// <summary>
 /// TCP清理
 /// </summary>
 private void close()
 {
     try
     {
         if (TCP_Client != null)
         {
             DataHandle.WriteLog(string.Format("已断开客户端{0}的连接", TCP_Client.Client.RemoteEndPoint));
             Client_Stream.Close();
             TCP_Client.Close();
             TCP_Client = null;
         }
         if (TCP_Proxy != null)
         {
             DataHandle.WriteLog(string.Format("已断开代理端{0}的连接", TCP_Proxy.Client.RemoteEndPoint));
             Proxy_Stream.Close();
             TCP_Proxy.Close();
             TCP_Proxy = null;
         }
     }
     catch (Exception)
     {
     }
 }