/// <summary> /// UDP接收回调 /// </summary> /// <param name="ar"></param> private void UDP_Recieve(IAsyncResult ar) { try { IPEndPoint Remote_Point = null; byte[] Receive_Data = UDP_Client.EndReceive(ar, ref Remote_Point); if (Receive_Data.Length > 0) { if (Proxy_Point_List.Contains(Remote_Point)) { var Header = DataHandle.Get_UDP_Header(Remote_Point); var Send_Data = Header.Concat(Receive_Data).ToArray(); Return_Source(Client_Point, DataHandle.En_Bytes(Send_Data)); } } UDP_Client.BeginReceive(new AsyncCallback(UDP_Recieve), null); } catch (Exception) { } }
/// <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(); } }
/// <summary> /// 发送数据 /// </summary> /// <param name="tcpClient">TCPClient</param> /// <param name="Data">数据</param> private void TCP_Send(TcpClient tcpClient, byte[] Data) { tcpClient.GetStream().Write(DataHandle.En_Bytes(Data)); }