/// <summary>设置父级DNS</summary> /// <param name="parents"></param> public virtual void SetParents(String parents) { var ss = parents.Split(","); if (ss == null || ss.Length < 1) { return; } var ps = Parents; var list = new HashSet <String>(ps.Select(p => p.ToString()), StringComparer.OrdinalIgnoreCase); //ps.Clear(); for (int i = ss.Length - 1; i >= 0; i--) { var uri = new NetUri(ss[i]); if (uri.Port <= 0) { uri.Port = 53; } if (!list.Contains(uri.ToString())) { if (uri.Address.IsAny()) { WriteLog("配置的父级DNS[{0}]有误,任意地址不能作为父级DNS地址。", uri); continue; } ps.Insert(0, uri); list.Add(uri.ToString()); } } }
void Connect() { _Client = null; var uri = new NetUri(cbAddr.Text); var cfg = Setting.Current; var mode = cbMode.Text; var ac = new LinkClient(uri.ToString()) { Log = cfg.ShowLog ? XTrace.Log : Logger.Null, EncoderLog = cfg.ShowEncoderLog ? XTrace.Log : Logger.Null }; //ac.Received += OnReceived; ac.UserName = cfg.UserName; ac.Password = cfg.Password; ac.ActionPrefix = mode; //ac.Encrypted = cfg.Encrypted; //ac.Compressed = cfg.Compressed; if (!ac.Open()) { return; } ac.CreateCallback = sc => { sc.Log = cfg.ShowLog ? XTrace.Log : Logger.Null; sc.LogSend = cfg.ShowSend; sc.LogReceive = cfg.ShowReceive; }; "已连接服务器".SpeechTip(); _Client = ac; pnlSetting.Enabled = false; pnlAction.Enabled = true; btnConnect.Text = "关闭"; // 添加地址 cfg.AddAddresss(uri.ToString()); cfg.Save(); BizLog = TextFileLog.Create("DeviceLog"); }
/// <summary>添加服务器</summary> /// <param name="uri"></param> public IApiServer Add(NetUri uri) { Type type; if (!Providers.TryGetValue(uri.Type + "", out type)) { return(null); } var svr = type.CreateInstance() as IApiServer; if (svr != null) { svr.Provider = this; svr.Log = Log; if (!svr.Init(uri.ToString())) { return(null); } } Servers.Add(svr); return(svr); }
private void btnSend_Click(Object sender, EventArgs e) { if (_Client == null || !_Client.Active) { return; } var count = (Int32)numThreads.Value; if (count <= cs.Count) { return; } //var sc = _Client.Client.GetService<ISocketClient>(); //if (sc == null) return; var uri = new NetUri(cbAddr.Text); Task.Run(() => { var cc = _Client; for (var i = 0; i < count; i++) { var ac = new LinkClient(uri.ToString()) { //ac.Received += OnReceived; UserName = cc.UserName, Password = cc.Password, ActionPrefix = cc.ActionPrefix }; //ac.Encrypted = cc.Encrypted; //ac.Compressed = cc.Compressed; cs.Add(ac); Task.Run(() => { for (var k = 0; k < 10; k++) { if (ac.Open()) { break; } Thread.Sleep(1000); } //// 共用统计对象 //if (ac.Active) //{ // var sc2 = ac.Client.GetService<ISocketClient>(); // sc2.StatSend = sc.StatSend; // sc2.StatReceive = sc.StatReceive; //} }); } }); }
/// <summary>添加服务器</summary> /// <param name="uri"></param> public void Add(NetUri uri) { Type type = null; if (Providers.TryGetValue(uri.Protocol, out type)) { var svr = type.CreateInstance() as IApiServer; if (svr.Init(uri.ToString())) { Servers.Add(svr); } } }
void Connect() { _Client = null; var uri = new NetUri(cbAddr.Text); var cfg = Setting.Current; var mode = cbMode.Text; var url = uri.ToString(); var ac = mode == "Device" ? new DeviceClient(url) : new LinkClient(url) { Log = cfg.ShowLog ? XTrace.Log : Logger.Null, EncoderLog = cfg.ShowEncoderLog ? XTrace.Log : Logger.Null }; ac.UserName = cfg.UserName; ac.Password = cfg.Password; ac.ActionPrefix = mode; if (!ac.Open()) { return; } "已连接服务器".SpeechTip(); _Client = ac; pnlSetting.Enabled = false; pnlAction.Enabled = true; btnConnect.Text = "关闭"; // 添加地址 cfg.AddAddresss(uri.ToString()); cfg.Save(); //BizLog = TextFileLog.Create("DeviceLog"); }
/// <summary>添加服务器</summary> /// <param name="uri"></param> public IApiServer Use(NetUri uri) { var svr = new ApiNetServer(); if (!svr.Init(uri.ToString())) { return(null); } Server = svr; return(svr); }
public void TestIPv6() { var addr = IPAddress.IPv6Loopback; Assert.Equal("::1", addr + ""); var ep = new IPEndPoint(addr, 80); Assert.Equal("[::1]:80", ep + ""); var uri = new NetUri(NetType.Tcp, ep); Assert.Equal("Tcp://[::1]:80", uri.ToString()); Assert.Equal(ep, uri.EndPoint); Assert.True(uri.IsTcp); uri.Port = 0; Assert.Equal("Tcp://::1", uri + ""); var uri2 = new NetUri("http://[::1]:80"); Assert.Equal(NetType.Http, uri2.Type); Assert.False(uri2.IsUdp); Assert.Null(uri2.Host); Assert.Equal(IPAddress.IPv6Loopback, uri2.Address); Assert.Equal(80, uri2.Port); Assert.Equal("Http://[::1]:80", uri2.ToString()); var uri3 = new NetUri("wss://::1"); Assert.Equal(NetType.WebSocket, uri3.Type); Assert.Null(uri3.Host); Assert.Equal(IPAddress.IPv6Loopback, uri3.Address); Assert.Equal(443, uri3.Port); Assert.Equal("wss://[::1]:443", uri3.ToString()); var uri4 = new NetUri(); uri4.Parse("ws://[240e:e0:9930:2100:9914:b410:c7d8:c0a6]"); Assert.Equal(NetType.WebSocket, uri4.Type); Assert.Null(uri4.Host); Assert.Equal("240e:e0:9930:2100:9914:b410:c7d8:c0a6", uri4.Address + ""); Assert.Equal(80, uri4.Port); Assert.Equal("ws://[240e:e0:9930:2100:9914:b410:c7d8:c0a6]:80", uri4.ToString()); }
private void btnSend_Click(Object sender, EventArgs e) { if (_Client == null || !_Client.Active) { return; } var count = (Int32)numThreads.Value; if (count <= cs.Count) { return; } var uri = new NetUri(cbAddr.Text); Task.Run(() => { var cc = _Client; for (var i = 0; i < count; i++) { var ac = new LinkClient(uri.ToString()) { UserName = cc.UserName, Password = cc.Password, ActionPrefix = cc.ActionPrefix }; cs.Add(ac); Task.Run(() => { for (var k = 0; k < 10; k++) { if (ac.Open()) { break; } Thread.Sleep(1000); } }); } }); }
/// <summary>添加服务器</summary> /// <param name="uri"></param> public IApiServer Add(NetUri uri) { Type type; if (!Providers.TryGetValue(uri.Protocol, out type)) { return(null); } var svr = type.CreateInstance() as IApiServer; if (svr != null && !svr.Init(uri.ToString())) { return(null); } Servers.Add(svr); return(svr); }
void Connect() { _Server = null; _Client = null; var uri = new NetUri(cbAddr.Text); // 网络封包 var idx = cbPacket.SelectedIndex; var fact = idx < 0 ? null : _packets.Result[idx].CreateInstance() as IPacketFactory; _Packet = fact.Create(); var cfg = MessageConfig.Current; switch (cbMode.Text) { case "服务端": var svr = new NetServer(); svr.Log = cfg.ShowLog ? XTrace.Log : Logger.Null; svr.SocketLog = cfg.ShowSocketLog ? XTrace.Log : Logger.Null; svr.Port = uri.Port; if (uri.IsTcp || uri.IsUdp) { svr.ProtocolType = uri.Type; } svr.MessageReceived += OnReceived; svr.LogSend = cfg.ShowSend; svr.LogReceive = cfg.ShowReceive; // 加大会话超时时间到1天 svr.SessionTimeout = 24 * 3600; svr.SessionPacket = fact; svr.Start(); "正在监听{0}".F(svr.Port).SpeechTip(); if (uri.Port == 0) { uri.Port = svr.Port; } _Server = svr; break; case "客户端": var client = uri.CreateRemote(); client.Log = cfg.ShowLog ? XTrace.Log : Logger.Null; client.MessageReceived += OnReceived; client.LogSend = cfg.ShowSend; client.LogReceive = cfg.ShowReceive; client.Packet = _Packet; client.Open(); "已连接服务器".SpeechTip(); if (uri.Port == 0) { uri.Port = client.Port; } _Client = client; break; default: return; } pnlSetting.Enabled = false; btnConnect.Text = "关闭"; // 添加地址 var addr = uri.ToString(); var list = cfg.Address.Split(";").ToList(); if (!list.Contains(addr)) { list.Insert(0, addr); cfg.Address = list.Join(";"); } cfg.Save(); _timer = new TimerX(ShowStat, null, 5000, 5000); BizLog = TextFileLog.Create("MessageLog"); }
void Connect() { _Server = null; _Client = null; var port = (Int32)numPort.Value; var uri = new NetUri(cbAddr.ActiveText); var cfg = ApiConfig.Current; var log = BizLog; switch (cbMode.Active) { case 0: //"服务端": var svr = new ApiServer(port) { Log = cfg.ShowLog ? log : Logger.Null, EncoderLog = cfg.ShowEncoderLog ? log : Logger.Null }; if (cfg.ShowSend || cfg.ShowReceive) { var ns = svr.Server as NetServer; ns.Log = log; ns.LogSend = cfg.ShowSend; ns.LogReceive = cfg.ShowReceive; } svr.Register <MyApiController>(); svr.Start(); "正在监听{0}".F(port).SpeechTip(); _Server = svr; break; case 1: //"客户端": var client = new ApiClient(uri + "") { Log = cfg.ShowLog ? log : Logger.Null, EncoderLog = cfg.ShowEncoderLog ? log : Logger.Null }; //if (cfg.ShowSend || cfg.ShowReceive) //{ // var ct = client.Client; // ct.Log = log; // ct.LogSend = cfg.ShowSend; // ct.LogReceive = cfg.ShowReceive; //} _Client = client; client.Open(); // 连接成功后拉取Api列表 GetApiAll(); "已连接服务器".SpeechTip(); break; default: return; } // pnlSetting.Enabled = false; btnConnect.Label = "关闭"; // 添加地址 var addr = uri.ToString(); var list = cfg.Address.Split(";").ToList(); if (!list.Contains(addr)) { list.Insert(0, addr); cfg.Address = list.Join(";"); } cfg.Save(); _timer = new TimerX(ShowStat, null, 5000, 5000) { Async = true }; }
void Connect() { _Server = null; _Client = null; var uri = new NetUri(cbAddr.Text); var cfg = ApiConfig.Current; var log = BizLog; switch (cbMode.Text) { case "服务端": var svr = new ApiServer(uri); svr.Log = cfg.ShowLog ? log : Logger.Null; svr.EncoderLog = cfg.ShowEncoderLog ? log : Logger.Null; svr.Start(); "正在监听{0}".F(uri.Port).SpeechTip(); _Server = svr; break; case "客户端": var client = new ApiClient(uri + ""); client.Log = cfg.ShowLog ? log : Logger.Null; client.EncoderLog = cfg.ShowEncoderLog ? log : Logger.Null; // 连接成功后拉取Api列表 client.Opened += (s, e) => { GetApiAll(); //client.UserName = cfg.UserName; //client.Password = cfg.Password; }; _Client = client; client.Open(); "已连接服务器".SpeechTip(); break; default: return; } pnlInfo.Enabled = true; pnlSetting.Enabled = false; btnConnect.Text = "关闭"; // 添加地址 var addr = uri.ToString(); var list = cfg.Address.Split(";").ToList(); if (!list.Contains(addr)) { list.Insert(0, addr); cfg.Address = list.Join(";"); } cfg.Save(); _timer = new TimerX(ShowStat, null, 5000, 5000); }