/// <summary> /// 读取回调 /// </summary> /// <param name="ar"></param> private void Socks_Receive(IAsyncResult ar) { var State_Vt = (((TcpClient Tcp_Client, NetworkStream TCP_Stream))ar.AsyncState); try { int size = State_Vt.TCP_Stream.EndRead(ar); if (size > 0) { Program.PrintLog(string.Format("收到客户端的{0}个字节数据", size)); byte[] Methods = dataHandle.Get_Checking_Method(Receive_Data.Take(size).ToArray()); int Data_Type = dataHandle.Get_Which_Type(Receive_Data.Take(size).ToArray()); //请求建立连接 if (Methods.Contains((byte)0)) { Socks_Send(State_Vt.Tcp_Client, dataHandle.No_Authentication_Required); Program.PrintLog("等待接受代理目标信息"); State_Vt.TCP_Stream.BeginRead(Receive_Data, 0, Data_Size, new AsyncCallback(Socks_Receive), State_Vt); } //接受代理目标端信息 else if (2 < Data_Type && Data_Type < 6) { var Request_Info = dataHandle.Get_Request_Info(Receive_Data.Take(size).ToArray()); TcpClient Tcp_Proxy = dataHandle.Connecte_Tcp(Request_Info.type, Request_Info.IP, Request_Info.port); if (Tcp_Proxy.Connected) { new Socks_Server(State_Vt.Tcp_Client, Tcp_Proxy); Socks_Send(State_Vt.Tcp_Client, dataHandle.Proxy_Success); Program.PrintLog("正式建立开启代理"); } else { Socks_Send(State_Vt.Tcp_Client, dataHandle.Connect_Fail); Close(State_Vt.Tcp_Client); } } } else { Close(State_Vt.Tcp_Client); } } catch (Exception) { Close(State_Vt.Tcp_Client); } }