/// <summary> /// 检查是否有新的客户端接出来 /// </summary> private void CheckConnecter() { for (int iIndex = 0; iIndex < m_Connecters.Length; iIndex++) { Connecter connecter = m_Connecters[iIndex]; // 检查是否已经处理过 if (connecter.IsNeedSlice == false) { continue; } // 获取连接出去的客户端 ClientSocketManager clientSocketManager = connecter.Slice(); if (clientSocketManager != null) { // 把连接出来的客户端放置入NetState中,当前的实例会保存在NetState.Instances中 NetState netState = new NetState(clientSocketManager, this); OnNetStateInit(netState); netState.Start(); } } }
/// <summary> /// /// </summary> internal ClientSocketManager(Connecter connecter, ConnectHandler connectHandler, ReceiveQueue receiveBuffer) { if (connecter == null) { throw new ArgumentNullException("ClientSocketHandler.ClientSocketManager(...) - listener == null error!"); } if (connectHandler == null) { throw new ArgumentNullException("ClientSocketHandler.ClientSocketManager(...) - serviceHandle == null error!"); } if (receiveBuffer == null) { throw new ArgumentNullException("receiveBuffer", "ClientSocketHandler.ClientSocketManager(...) - receiveBuffer == null error!"); } m_Connecter = connecter; m_ConnectHandle = connectHandler; m_ReceiveBuffer = receiveBuffer; { // 清空数据 m_ReceiveBuffer.Clear(); } // 初始化数据 表示还没调用过Free(...)函数 m_LockFree.SetValid(); }
public void DisposeTest() { Connecter target = new Connecter(); // TODO: 初始化为适当的值 target.Dispose(); Assert.Inconclusive("无法验证不返回值的方法。"); }
public void SetConnecter(Connecter Start, Connecter End) { m_StartConnecter = Start; m_EndConnecter = End; m_StartConnecter.AddString(this); m_EndConnecter.AddString(this); }
/// <summary> /// 构造函数 /// </summary> public BitFieldMessage(EncryptedConnection encryptedConnection, Connection connection, Connecter connecter) : base(encryptedConnection) { this.connection = connection; this.connecter = connecter; this.InitialBytesLength(connecter.PiecesNumber); }
public void Login(Func <Connecter> fun, SuiDaoServer serverConfig) { _serverConfig = serverConfig; login = fun; _client = login.Invoke(); LogSuccess(_client.Socket); }
public void AddConnecterTest() { MessagePump target = new MessagePump(); // TODO: 初始化为适当的值 Connecter connecter = null; // TODO: 初始化为适当的值 target.AddConnecter(connecter); Assert.Inconclusive("无法验证不返回值的方法。"); }
/// <summary> /// 构造函数 /// </summary> /// <param name="booleans">片断的BitField信息</param> public BitFieldMessage(bool[] booleans) : base(null) { this.connection = null; this.connecter = null; this.booleans = booleans; this.InitialBytesLength(booleans.Length); }
//対象の糸に繋がっている木をすべてマイナス private void StringAllMinus() { List <Connecter> connecters = new List <Connecter>(); Connecter origin = m_hitinfo.collider.GetComponent <Connecter>(); connecters.Add(origin); StringSearch(origin, ref connecters); }
public void ConnecterSocketTest() { Connecter target = new Connecter(); // TODO: 初始化为适当的值 SocketClient actual; actual = target.ConnecterSocket; Assert.Inconclusive("验证此测试方法的正确性。"); }
public void IsSliceTest() { Connecter target = new Connecter(); // TODO: 初始化为适当的值 bool actual; actual = target.IsNeedSlice; Assert.Inconclusive("验证此测试方法的正确性。"); }
public static List<string> TcpConnects(BotDTO[] botlist, string model) { List<string> response = new List<string>(); for (var i = 0; i < botlist.Length; i++) { response.Add(Connecter.CreateTcpSend(botlist[i].Domain, model)); }; return response; }
public void InitClientHandlerTest() { ClientSocketManager target = new ClientSocketManager(); // TODO: 初始化为适当的值 Connecter connecter = null; // TODO: 初始化为适当的值 ConnectHandle connectHandle = ConnectHandle.Zero; // TODO: 初始化为适当的值 ReceiveQueue receiveBuffer = null; // TODO: 初始化为适当的值 target.InitClientHandler(connecter, connectHandle, receiveBuffer); Assert.Inconclusive("无法验证不返回值的方法。"); }
public void SliceTest() { Connecter target = new Connecter(); // TODO: 初始化为适当的值 ClientSocketManager expected = null; // TODO: 初始化为适当的值 ClientSocketManager actual; actual = target.Slice(); Assert.AreEqual(expected, actual); Assert.Inconclusive("验证此测试方法的正确性。"); }
// Use this for initialization void Start() { Log.LogSetInit.Init(); conn = new Connecter(); conn._pros.OnRes_Person += ResPerson; // 消息监听; content.text = "get zyy"; //testProtoBuf(); //onClick_Btn(); }
public static CommandResponseModel[] TcpConnects(BotDTO[] botlist, string model)//Multi response { CommandResponseModel[] response = new CommandResponseModel[botlist.Length]; for (var i = 0; i < botlist.Length; i++) { response[i] = JsonConvert.DeserializeAnonymousType(Connecter.CreateTcpSend(botlist[i].Domain, model), new CommandResponseModel()); } ; return(response); }
public void StartConnectServerTest() { Connecter target = new Connecter(); // TODO: 初始化为适当的值 string strHostNamePort = string.Empty; // TODO: 初始化为适当的值 bool expected = false; // TODO: 初始化为适当的值 bool actual; actual = target.StartConnectServer(strHostNamePort); Assert.AreEqual(expected, actual); Assert.Inconclusive("验证此测试方法的正确性。"); }
private void HandleServerRequest(string words) { Message <object> Msg; try { Msg = JsonConvert.DeserializeObject <Message <object> >(words); _logger.Info($"收到服务端指令 {Msg.MessageType}"); switch (Msg.MessageType) { case MessageType.C_Heart: break; case MessageType.S_NewCustomer: var request = (Msg.Content as JObject).ToObject <NewCustomerRequest>(); var connecter = new Connecter(_clientConfig.Common.ServerAddr, _clientConfig.Common.ServerPort); connecter.Connect(); connecter.Send(new Message <string> { MessageType = MessageType.C_SwapMsg, Content = request.MsgId }); var localConnecter = new Connecter(request.WebConfig.LocalIp, request.WebConfig.LocalPort); localConnecter.Connect(); new SocketSwap(connecter.Client, localConnecter.Client).StartSwap(); break; case MessageType.S_NewSSH: var request_ssh = (Msg.Content as JObject).ToObject <NewSSHRequest>(); var connecter_ssh = new Connecter(_clientConfig.Common.ServerAddr, _clientConfig.Common.ServerPort); connecter_ssh.Connect(); connecter_ssh.Send(new Message <string> { MessageType = MessageType.C_SwapMsg, Content = request_ssh.MsgId }); var localConnecter_ssh = new Connecter(request_ssh.SSHConfig.LocalIp, request_ssh.SSHConfig.LocalPort); localConnecter_ssh.Connect(); new SocketSwap(connecter_ssh.Client, localConnecter_ssh.Client).StartSwap(); break; case MessageType.C_SwapMsg: case MessageType.C_LogIn: default: throw new Exception("参数异常"); } } catch (Exception ex) { _logger.Error(ex); _logger.Error(words); } }
public void WorldTest() { Connecter target = new Connecter(); // TODO: 初始化为适当的值 BaseWorld expected = null; // TODO: 初始化为适当的值 BaseWorld actual; target.World = expected; actual = target.World; Assert.AreEqual(expected, actual); Assert.Inconclusive("验证此测试方法的正确性。"); }
private void StringSearch(Connecter connecter, ref List <Connecter> connecters) { foreach (Connecter c in connecter.m_Child) { IsUsedConnecter(c, ref connecters); } Connecter start = connecter.m_StartConnecter; Connecter end = connecter.m_EndConnecter; IsUsedConnecter(start, ref connecters); IsUsedConnecter(end, ref connecters); }
private static void Run(IServiceProvider servicesProvider, ILogger _logger, string key, bool log) { var res = HttpHelper.PostAsJson("https://api1.suidao.io/api/Client/GetServerByKey", $"{{ \"key\":\"{key}\"}}").Result; var jobj = JObject.Parse(res); if ((bool)jobj["success"] == true) { // 记录登录记录 if (log) { AppendTextToFile(Path.Combine(AppContext.BaseDirectory, KeyLogName), Environment.NewLine + key); } var server = jobj["data"].ToObject <SuiDaoServerConfig>(); var client = servicesProvider.GetRequiredService <FastTunnelClient>(); client.Login(() => { Connecter _client = null; try { _client = new Connecter(server.ip, server.bind_port); _client.Connect(); } catch (Exception ex) { _logger.Error(ex.Message); _client.Socket.Close(); throw; } // 登录 _client.Send(new Message <LogInByKeyMassage> { MessageType = MessageType.C_LogIn, Content = new LogInByKeyMassage { key = key } }); return(_client); }, new SuiDaoServer { ServerAddr = server.ip, ServerPort = server.bind_port }); } else { Console.WriteLine(jobj["errorMsg"].ToString()); NewKey(_logger); } }
public void HandlerMsg(FastTunnelClient cleint, Message <JObject> Msg) { var request = Msg.Content.ToObject <NewCustomerMassage>(); var connecter = new Connecter(cleint._serverConfig.ServerAddr, cleint._serverConfig.ServerPort); connecter.Connect(); connecter.Send(new Message <SwapMassage> { MessageType = MessageType.C_SwapMsg, Content = new SwapMassage(request.MsgId) }); var localConnecter = new Connecter(request.WebConfig.LocalIp, request.WebConfig.LocalPort); try { localConnecter.Connect(); } catch (SocketException sex) { localConnecter.Close(); if (sex.ErrorCode == 10061) { // 内网的站点不存在或无法访问 string statusLine = "HTTP/1.1 200 OK\r\n"; string responseHeader = "Content-Type: text/html\r\n"; byte[] responseBody; responseBody = Encoding.UTF8.GetBytes(TunnelResource.Page_NoSite); connecter.Send(Encoding.UTF8.GetBytes(statusLine)); connecter.Send(Encoding.UTF8.GetBytes(responseHeader)); connecter.Send(Encoding.UTF8.GetBytes("\r\n")); connecter.Send(responseBody); connecter.Socket.Disconnect(false); connecter.Socket.Close(); return; } else { throw; } } catch (Exception) { localConnecter.Close(); throw; } new SocketSwap(connecter.Socket, localConnecter.Socket).StartSwap(); }
public void HandlerMsg(FastTunnelClient cleint, Message <JObject> Msg) { var request_ssh = Msg.Content.ToObject <NewSSHRequest>(); var connecter_ssh = new Connecter(cleint._serverConfig.ServerAddr, cleint._serverConfig.ServerPort); connecter_ssh.Connect(); connecter_ssh.Send(new Message <SwapMassage> { MessageType = MessageType.C_SwapMsg, Content = new SwapMassage(request_ssh.MsgId) }); var localConnecter_ssh = new Connecter(request_ssh.SSHConfig.LocalIp, request_ssh.SSHConfig.LocalPort); localConnecter_ssh.Connect(); new SocketSwap(connecter_ssh.Socket, localConnecter_ssh.Socket).StartSwap(); }
private async Task reConnectAsync() { Close(); try { _client = lastLogin.Invoke(); } catch (Exception ex) { _logger.LogError(ex.Message); Thread.Sleep(reTrySpan); await reConnectAsync(); } LogSuccess(_client.Socket); }
private void reConnect() { Close(); try { _client = login.Invoke(); } catch (Exception ex) { _logger.LogError(ex.Message); Thread.Sleep(reTrySpan); reConnect(); return; } LogSuccess(_client.Socket); }
//すでに調べた糸かどうか(調べていない場合は検索) private void IsUsedConnecter(Connecter connecter, ref List <Connecter> connecters) { foreach (Connecter c in connecters) { if (c.gameObject == connecter.gameObject) { return; } } if (connecter.gameObject.tag == "Tree") { connecter.GetComponent <Tree>().m_TerritoryRate -= StringDemeritRate; connecters.Add(connecter); return; } connecters.Add(connecter); StringSearch(connecter, ref connecters); }
public void Login(Func <Connecter> login, SuiDaoServer serverConfig) { _serverConfig = serverConfig; lastLogin = login; try { _client = lastLogin.Invoke(); } catch (Exception ex) { _logger.LogError(ex.Message); Thread.Sleep(reTrySpan); reConnectAsync().Wait(); return; } LogSuccess(_client.Socket); }
/// <summary> /// 添加多个连接端口的数据传过来 /// </summary> public void AddConnecter(Connecter connecter) { if (connecter == null) { throw new ArgumentNullException("connecter", "MessagePump.AddConnecter(...) - connecter == null error!"); } if (connecter.World != null && connecter.World != World) { throw new ArgumentException("connecter.World", "MessagePump.AddConnecter(...) - connecter.World != null && connecter.World != this.World error!"); } // 检查是否有相同的连接器 Connecter[] connecterArray = m_Connecters; for (int iIndex = 0; iIndex < connecterArray.Length; iIndex++) { Connecter itemConnecter = connecterArray[iIndex]; if (itemConnecter == connecter) { return; } } SpinLockEx.ReliableEnter(ref m_OnlyLockAddConnecter); { // 创建新的Listener数组,添加数据,交换数组数据,不需要锁定,没有引用时自动会回收数据 Connecter[] tempConnecter = new Connecter[m_Connecters.Length + 1]; for (int iIndex = 0; iIndex < m_Connecters.Length; ++iIndex) { tempConnecter[iIndex] = m_Connecters[iIndex]; } tempConnecter[m_Connecters.Length] = connecter; connecter.World = m_World; m_Connecters = tempConnecter; } m_OnlyLockAddConnecter.Exit(); }
private static void Run(IServiceProvider servicesProvider) { var client = servicesProvider.GetRequiredService <FastTunnelClient>(); var config = servicesProvider.GetRequiredService <ClientConfig>(); client.Login(() => { Connecter _client; try { // 连接到的目标IP _client = new Connecter(config.Common.ServerAddr, config.Common.ServerPort); _client.Connect(); } catch (Exception ex) { Thread.Sleep(5000); throw; } // 登录 _client.Send(new Message <LogInRequest> { MessageType = MessageType.C_LogIn, Content = new LogInRequest { Webs = config.Webs, SSH = config.SSH } }); return(_client); }, config.Common); while (true) { Thread.Sleep(10000 * 60); } }
public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("===== FastTunnel Client Start ====="); config = _configuration.Get <AppSettings>().ClientSettings; _fastTunnelClient.Login(() => { Connecter _client; try { // 连接到的目标IP _client = new Connecter(config.Common.ServerAddr, config.Common.ServerPort); _client.Connect(); } catch (Exception) { Thread.Sleep(5000); throw; } // 登录 _client.Send(new Message <LogInMassage> { MessageType = MessageType.C_LogIn, Content = new LogInMassage { Webs = config.Webs, SSH = config.SSH, AuthInfo = "ODadoNDONODHSoDMFMsdpapdoNDSHDoadpwPDNoWAHDoNfa" }, }); return(_client); }, config.Common); return(Task.CompletedTask); }
/// <summary> /// 添加多个连接端口的数据传过来 /// </summary> public void AddConnecter( Connecter connecter ) { if ( connecter == null ) throw new ArgumentNullException( "connecter", "MessagePump.AddConnecter(...) - connecter == null error!" ); if ( connecter.World != null && connecter.World != World ) throw new ArgumentException( "connecter.World", "MessagePump.AddConnecter(...) - connecter.World != null && connecter.World != this.World error!" ); // 检查是否有相同的连接器 Connecter[] connecterArray = m_Connecters; for ( int iIndex = 0; iIndex < connecterArray.Length; iIndex++ ) { Connecter itemConnecter = connecterArray[iIndex]; if ( itemConnecter == connecter ) return; } SpinLockEx.ReliableEnter( ref m_OnlyLockAddConnecter ); { // 创建新的Listener数组,添加数据,交换数组数据,不需要锁定,没有引用时自动会回收数据 Connecter[] tempConnecter = new Connecter[m_Connecters.Length + 1]; for ( int iIndex = 0; iIndex < m_Connecters.Length; ++iIndex ) tempConnecter[iIndex] = m_Connecters[iIndex]; tempConnecter[m_Connecters.Length] = connecter; connecter.World = m_World; m_Connecters = tempConnecter; } m_OnlyLockAddConnecter.Exit(); }
/// <summary> /// /// </summary> internal ClientSocketManager( Connecter connecter, ConnectHandler connectHandler, ReceiveQueue receiveBuffer ) { if ( connecter == null ) throw new ArgumentNullException( "ClientSocketHandler.ClientSocketManager(...) - listener == null error!" ); if ( connectHandler == null ) throw new ArgumentNullException( "ClientSocketHandler.ClientSocketManager(...) - serviceHandle == null error!" ); if ( receiveBuffer == null ) throw new ArgumentNullException( "receiveBuffer", "ClientSocketHandler.ClientSocketManager(...) - receiveBuffer == null error!" ); m_Connecter = connecter; m_ConnectHandle = connectHandler; m_ReceiveBuffer = receiveBuffer; { // ������� m_ReceiveBuffer.Clear(); } // ��ʼ������ ��ʾ��û���ù�Free(...)���� m_LockFree.SetValid(); }