private void SendPing() { if (m_Client != null && m_Client.Connected && m_User.IsAuthenticated && ClientPingMode == PingMode.Initiative) { if (_lastSendTime.AddSeconds(PingInterval) > DateTime.Now) { //未到时间 return; } try { byte[] sendData = PingData.ToByte(); m_Client.BeginSend(sendData, 0, sendData.Length, SocketFlags.None, null, m_Client); UpdateTimeForInitiativePing(); LogOpInfo("Send--Ping", pingData); } catch (Exception ex) { } } else { PingTimer.Stop(); } }
public void PingCompleate(object sender, PingCompletedEventArgs e) { Log_Verb("Ping Complete"); PingData seq = (PingData)e.UserState; PingReply rep = e.Reply; Ping ping = (Ping)sender; lock (sentry) { pings.Remove(ping); ping.Dispose(); switch (rep.Status) { case IPStatus.Success: ICMP retICMP = new ICMP(seq.Data); retICMP.HeaderData = seq.HeaderData; retICMP.Type = 0; //echo reply recvBuff.Add(retICMP); break; default: //ping failed open -= 1; if (open == 0) { RaiseEventConnectionClosed(); } break; } } }
public async Task <ActionResult <PingData> > Get(string host) { var validatedIp = NetUtils.GetIpAddress(host); if (validatedIp == null) { var msg = "Invalid host or host could not be reached"; _logger.LogError(msg); return(BadRequest(msg)); } var ipAddress = validatedIp.ToString(); var client = _clientFactory.CreateClient(); var viewDnsRepository = new ViewDnsRepository(client); _logger.LogDebug("Getting Ping data..."); var pingData = await viewDnsRepository.GetPingData(ipAddress); _logger.LogDebug("Ping data result: {1}", pingData); var output = new PingData { Host = pingData.Query["host"], Replies = new List <PingData.ReplyData>() }; foreach (var reply in pingData.Response.Replies) { output.Replies.Add(new PingData.ReplyData("rtt", reply.Rtt)); } return(Ok(output)); }
public static bool Ping(PingData[] PingList, uint timeout) { uint tick = Utility.GetTickCount(); for (int i = 0; i < PingList.Length; ++i) { PingData pd = PingList[i]; pd.Socket = TCPClient.CreateSocket(true, true); pd.Ping = tick; pd.Completion = false; pd.endPoint = new IPEndPoint(IPAddress.Parse(pd.IP), pd.Port); Thread th = new Thread(new ParameterizedThreadStart(ThreadConnect)); th.Start(pd); } while (Utility.GetTickCount() - tick < timeout) { uint k = 0; for (int i = 0; i < PingList.Length; ++i) { if (PingList[i].Completion) { ++k; } } if (k == PingList.Length) { return(true); } } return(false); }
public async Task AddAsync(Guid id, string vehicleId, DateTime recivedAt) { //var activityCategory = await _pingRepository.GetAsync(category); //if (activityCategory == null) //{ // throw new ActioException("category_not_found", // $"Category: '{category}' was not found."); //} var pingInfo = new PingData(id, vehicleId, recivedAt); await _pingRepository.AddAsync(pingInfo); }
public PingInfo Map(PingData data) { return(new PingInfo { Address = data.Address, TTL = data.TTL, RoundtripTime = data.RoundtripTime, DontFragment = data.DontFragment, BufferLength = data.BufferLength, Status = data.Status }); }
internal static NormalCommand CreatePing(Action <CommandData> action) { Func <CommandData, CommandResult> func = commandData => { action(commandData); return(CommandResult.NewCompleted(ModeSwitch.NoSwitch)); }; var data = new PingData(func.ToFSharpFunc()); return(NormalCommand.NewPing(data)); }
public static void SetRespondable(PlayerCharacterMasterController owner, PingData pingData, int pingTypeIndex, int pingSkinIndex, string displayName) { respondables[owner] = new RespondablePingData { pingTypeIndex = pingTypeIndex, pingSkinIndex = pingSkinIndex, birthday = Time.unscaledTime, pingData = pingData, yesVotes = new HashSet <PlayerCharacterMasterController>(), noVotes = new HashSet <PlayerCharacterMasterController>(), displayName = displayName }; respondables[owner].yesVotes.Add(owner); Chat.AddMessage(Language.GetStringFormatted("RADIALPINGS_SPECIAL_RESPONDABLE_START", RESPONDABLE_LIFETIME.ToString("N0"))); }
//0: self //1: user //2: message //3: yes count //4: other count //5: no count private bool RespondTryApply(PingData pingData, List <string> tokens, ResponseType responseType) { var targetPCMC = pingData.targets[1].GetComponent <PlayerCharacterMasterController>(); if (!respondables.ContainsKey(targetPCMC)) { return(false); } var resp = respondables[targetPCMC]; int newYesVotes = resp.yesVotes.Count; int newNoVotes = resp.noVotes.Count; var nvc = resp.noVotes.Contains(pingData.owner); var yvc = resp.yesVotes.Contains(pingData.owner); switch (responseType) { case ResponseType.No: if (nvc) { return(false); } newNoVotes++; if (yvc) { newYesVotes--; } break; case ResponseType.Yes: if (yvc) { return(false); } newYesVotes++; if (nvc) { newNoVotes--; } break; } int newAbstainVotes = PlayerCharacterMasterController.instances.Count - newYesVotes - newNoVotes; tokens.Add(Util.GetBestMasterName(targetPCMC.master)); tokens.Add(resp.displayName); tokens.Add(newYesVotes.ToString()); tokens.Add(newAbstainVotes.ToString()); tokens.Add(newNoVotes.ToString()); return(true); }
public PingData GetPingData() { PingData pingData = null; InstalledPackage package = InstalledPackage.GetAllInstalledPackages().SingleOrDefault(ip => ip.Data.Name.Equals("Tea Commerce") || ip.Data.Name.Equals("teacommerce")); if (package != null) { string teaCommerceVersion = package.Data.Version; const string cms = "Umbraco"; string cmsVersion = UmbracoVersion.Current.ToString(); string databaseTechnology = _databaseFactory.Get().DatabaseType.ToString(); string technology = "ASP.NET Web Forms"; List <string> renderingEngines = new List <string>(); XmlNode renderingEngineXml = UmbracoSettings._umbracoSettings.SelectSingleNode("//templates/defaultRenderingEngine"); if (renderingEngineXml != null && renderingEngineXml.InnerText.ToLowerInvariant() == "mvc") { technology = "ASP.NET MVC"; } if (technology == "ASP.NET MVC") { renderingEngines.Add("Razor"); } else { string macroScriptsFolderPath = HostingEnvironment.MapPath("~/macroScripts"); if (macroScriptsFolderPath != null && Directory.Exists(macroScriptsFolderPath) && Directory.GetFiles(macroScriptsFolderPath, "*.cshtml", SearchOption.AllDirectories).Any()) { renderingEngines.Add("Razor"); } } string xsltFolderPath = HostingEnvironment.MapPath("~/xslt"); if (xsltFolderPath != null && Directory.Exists(xsltFolderPath) && Directory.GetFiles(xsltFolderPath, "*.xslt", SearchOption.AllDirectories).Any()) { renderingEngines.Add("XSLT"); } pingData = new PingData(teaCommerceVersion, cms, cmsVersion, databaseTechnology, technology) { RenderingEngines = renderingEngines }; } return(pingData); }
public async Task <PingData> ForwardPing(PingData data, string path) { var client = _clientFactory.CreateClient(); var jsonData = JsonConvert.SerializeObject(data); var stringContent = new StringContent(jsonData, Encoding.UTF8, "application/json"); var response = await client.PostAsync(path, stringContent); response.EnsureSuccessStatusCode(); var newData = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject <PingData>(newData); return(result); }
public bool Parse(XElement input, string clientLogin) { if (!(input.Attribute("moduleType").Value == "ping")) { return(false); } var data = new PingData { Date = DateTime.Now, Name = clientLogin }; _pingCacher.Add(data); return(true); }
IEnumerator sendTestPingData() { while (_TestPingData) { currentPingIndex++; PingData data = new PingData(); data.sendTime = Time.unscaledTime; sendPingList.Add(currentPingIndex, data); TestBinMsg msg = new TestBinMsg(); msg.stamp = currentPingIndex; RoomSession.inst.send(msg); yield return(new WaitForSeconds(2.0f)); } }
private int RespondModify(ref PingData pingData, int catalogIndex, List <string> formatInserts, ResponseType responseType) { var targetPCMC = pingData.targets[1].GetComponent <PlayerCharacterMasterController>(); var resp = respondables[targetPCMC]; switch (responseType) { case ResponseType.No: resp.noVotes.Add(pingData.owner); resp.yesVotes.Remove(pingData.owner); break; case ResponseType.Yes: resp.yesVotes.Add(pingData.owner); resp.noVotes.Remove(pingData.owner); break; } return(MiscUtil.ModifyTargetSelf(ref pingData, catalogIndex, formatInserts)); }
public void Go(List <Sender> senders, Func <PingData, byte[]> serialize, int iterations = 10) { for (var i = 0; i < iterations; i++) { var data = new PingData() { DeviceId = Guid.NewGuid().ToString(), Message = "Value x y z", PingTime = DateTime.UtcNow }; var byteData = serialize(data); foreach (var sender in senders) { sender.Send(byteData).Wait(); } } }
public async Task <PingData> GetPingDetails(string ipAddress) { PingData data = null; using (Ping pingSender = new Ping()) { //var a = pingSender.SendPingAsync(ipAddress).GetAwaiter(); PingReply reply = await pingSender.SendPingAsync(ipAddress); data = new PingData(); data.Address = reply.Address.ToString(); data.RoundtripTime = reply.RoundtripTime; data.DontFragment = reply.Options.DontFragment; data.Status = reply.Status.ToString(); data.TTL = reply.Options.Ttl; data.BufferLength = reply.Buffer.Length; } return(data); }
public PingData GetPingData() { PingData pingData = null; InstalledPackage package = InstalledPackage.GetAllInstalledPackages().SingleOrDefault( ip => ip.Data.Name.Equals( "Tea Commerce" ) || ip.Data.Name.Equals( "teacommerce" ) ); if ( package != null ) { string teaCommerceVersion = package.Data.Version; const string cms = "Umbraco"; string cmsVersion = UmbracoVersion.Current.ToString(); string databaseTechnology = _databaseFactory.Get().DatabaseType.ToString(); string technology = "ASP.NET Web Forms"; List<string> renderingEngines = new List<string>(); XmlNode renderingEngineXml = UmbracoSettings._umbracoSettings.SelectSingleNode( "//templates/defaultRenderingEngine" ); if ( renderingEngineXml != null && renderingEngineXml.InnerText.ToLowerInvariant() == "mvc" ) { technology = "ASP.NET MVC"; } if ( technology == "ASP.NET MVC" ) { renderingEngines.Add( "Razor" ); } else { string macroScriptsFolderPath = HostingEnvironment.MapPath( "~/macroScripts" ); if ( macroScriptsFolderPath != null && Directory.Exists( macroScriptsFolderPath ) && Directory.GetFiles( macroScriptsFolderPath, "*.cshtml", SearchOption.AllDirectories ).Any() ) { renderingEngines.Add( "Razor" ); } } string xsltFolderPath = HostingEnvironment.MapPath( "~/xslt" ); if ( xsltFolderPath != null && Directory.Exists( xsltFolderPath ) && Directory.GetFiles( xsltFolderPath, "*.xslt", SearchOption.AllDirectories ).Any() ) { renderingEngines.Add( "XSLT" ); } pingData = new PingData( teaCommerceVersion, cms, cmsVersion, databaseTechnology, technology ) { RenderingEngines = renderingEngines }; } return pingData; }
public async Task <IActionResult> Ping([FromBody] PingData data) { var json = JsonConvert.SerializeObject(data); _logger.LogInformation($"PING: {json}"); var localIp = _accessor.ActionContext.HttpContext.Connection.LocalIpAddress.ToString(); var remoteIp = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(); var protocol = _accessor.ActionContext.HttpContext.Request.IsHttps ? "https" : "http"; var pingUrl = $"{protocol}://{_accessor.ActionContext.HttpContext.Request.Host}/{_accessor.ActionContext.HttpContext.Request.Path}"; _logger.LogInformation($"Connection.LocalIpAddress: {localIp}"); _logger.LogInformation($"Connection.RemoteIpAddress: {remoteIp}"); PingData result = null; var nextData = new PingData { Id = Guid.NewGuid().ToString(), PingerLocalIp = data.PingerLocalIp, PingLocalIp = localIp, PingRemoteIp = remoteIp, TargetUrl = data.TargetUrl, PingUrl = pingUrl }; try { result = await _sender.ForwardPing(nextData, nextData.TargetUrl); } catch (Exception ex) { _logger.LogError(ex.Message, ex); return(StatusCode(StatusCodes.Status500InternalServerError)); } return(Ok(result)); }
public void PingCompleate(object sender, System.Net.NetworkInformation.PingCompletedEventArgs e) { PingData Seq = (PingData)e.UserState; PingReply rep = e.Reply; lock (sentry) { switch (rep.Status) { case IPStatus.Success: ICMP retICMP = new ICMP(Seq.Data); retICMP.HeaderData = Seq.HeaderData; retICMP.Type = 0; //echo reply recvbuff.Add(retICMP); break; default: open -= 1; break; } } }
public static void ThreadConnect(object obj) { PingData pd = (PingData)obj; byte[] buff = new byte[32]; try { pd.Socket.Connect(pd.endPoint); int k = pd.Socket.Receive(buff, SocketFlags.None); if (k >= 4) { pd.Ping = Utility.GetTickCount() - pd.Ping; pd.Online = System.BitConverter.ToUInt32(buff, 0); pd.Socket.Close(); } } catch { } pd.Socket = null; pd.Completion = true; }
public async Task <IActionResult> Bounce([FromBody] PingData data) { var json = JsonConvert.SerializeObject(data); _logger.LogInformation($"BOUNCE: {json}"); var localIp = _accessor.ActionContext.HttpContext.Connection.LocalIpAddress.ToString(); var remoteIp = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(); _logger.LogInformation($"Connection.LocalIpAddress: {localIp}"); _logger.LogInformation($"Connection.RemoteIpAddress: {remoteIp}"); _logger.LogInformation($"Bouncing Request Id: {data.Id}"); _logger.LogInformation($" => Target: {data.TargetUrl}"); var protocol = _accessor.ActionContext.HttpContext.Request.IsHttps ? "https" : "http"; var bounceUrl = $"{protocol}://{_accessor.ActionContext.HttpContext.Request.Host}/{_accessor.ActionContext.HttpContext.Request.Path}"; PingData result = new PingData { Id = data.Id, BounceLocalIp = localIp, BounceRemoteIp = remoteIp, PingRemoteIp = data.PingRemoteIp, PingLocalIp = data.PingLocalIp, PingerLocalIp = data.PingerLocalIp, TargetUrl = data.TargetUrl, PingUrl = data.PingUrl, BounceUrl = bounceUrl }; _logger.LogInformation($"{data.Id} Bounced!"); return(Ok(result)); }
internal static NormalCommand CreatePing(Action <CommandData> action) { var data = new PingData(action.ToFSharpFunc()); return(NormalCommand.NewPing(data)); }
public async Task AddAsync(PingData pingData) => await Collection.InsertOneAsync(pingData);