/// <summary> /// traceroute Thread /// </summary> private void thDoTraceRoute() { String msg = ""; try { if (!ipAddress.Equals(textBox_host.Text)) { msg = textBox_host.Text + "[" + ipAddress + "]"; } else { msg = textBox_host.Text; } foreach (var entry in TraceRouteHelper.Tracert(ipAddress, int.Parse(numericUpDown_MaxHops.Value.ToString()), int.Parse(numericUpDown_Timeout.Value.ToString()))) { if (bIsStop) { break; } textBox_Logs.Invoke(new MethodInvoker(delegate() { TaobaoJsonData tjd = new TaobaoJsonData(); Boolean bisOk = false; if ((null != entry.Address) && (!"".Equals(entry.Address)) && (!"N/A".Equals(entry.Address))) { try { long ipLong = IPHelper.Ip2Long(entry.Address); bisOk = true; } catch (Exception e) { } if (bisOk) { if (!ipWhoisCache.ContainsKey(entry.Address)) { tjd = getIpWhoisFromTaobao(entry.Address); } else { bisOk = ipWhoisCache.TryGetValue(entry.Address, out tjd); } } } StringBuilder sb = new StringBuilder(); sb.Append(entry.ToString()); sb.Append("|"); if (bisOk && (tjd.code == 0)) { //如果正常 sb.Append(tjd.data.country + "\t" + tjd.data.area +"\t"+tjd.data.region+ "\t" + tjd.data.city + "\t" + tjd.data.isp); } textBox_Logs.AppendText(sb.ToString() + "\r\n"); })); } } catch (Exception e) { textBox_Logs.Invoke(new MethodInvoker(delegate() { textBox_Logs.AppendText(e.ToString() + "\r\n"); })); } finally { textBox_Logs.Invoke(new MethodInvoker(delegate() { textBox_Logs.AppendText("Tracert " + msg + " complete.\r\n"); textBox_Logs.AppendText("-----------------------------------------------------------------\r\n"); })); button_OK.Invoke(new MethodInvoker(delegate() { button_OK.Enabled = true; })); } }
/// <summary> /// 从淘宝获取IP数据 /// </summary> /// <param name="ip"></param> /// <returns></returns> TaobaoJsonData getIpWhoisFromTaobao(String ip) { string url = string.Format(UrlFomat, ip); string js = HttpHelper.HttpRequest(url, Encoding.UTF8); TaobaoJsonData tjd = new TaobaoJsonData(); if ((js != null) && (js.Trim() != "")) { //writedata(js); tjd = Newtonsoft.Json.JsonConvert.DeserializeObject<TaobaoJsonData>(js); //将数据添加到静态缓存中 tjd.data.ipLong = IPHelper.Ip2Long(ip); tjd.data.endIP = ip; tjd.data.endIPLong = tjd.data.ipLong; //增加到缓存中 ipWhoisCache.Add(ip, tjd); } return tjd; }