如题,我想在代码里去Ping对方的网站,得到对方网站的IP(包括电信,网通,其它网).别人给我一个思路是修改本机的DNS,然后去Ping对方的网站。我不知道怎么用代码修改自己的DNS.(求这个代码)还有就是在2次不同DNS去Ping对方网站的时候需要清理下缓存,这个怎么弄?麻烦高手指教还有就是有其它办法也可以。
解决方案 »
- 动态构造数据列值 绑定到gridview图片怎么显示不出来
- 单纯CommandField中的删除提示怎么写
- 每次一拉动 table 中的 td 总会自动给我加上css td.style1(如何取消)?
- [求助]调用sql存储过程报错。请大家给我建议
- asp.net 页面中引入vbscript 文件
- 错误 CS0117: “System.Data.SqlClient.SqlConnection”并不包含“close”的定义,50分求助啊
- 帮帮忙`~~确实自己解决不了~~
- qx_2000(Knight)请来讨论一下关于收发短信的问题
- 没分了,江湖救急!! 如何将 "abc#123\#456" split成数组[abc, 123\#456]
- 如果用正则提取所有<script></script>的内容
- ASP.NET(vb)如何给datagrid中的一个dropdownlist赋值
- js如何获取treeview选中节点的值?
Const STR_NEWDNS2 = "192.168.0.43"
Const STR_GATEWAY = "192.168.0.1"Set fs = CreateObject("Scripting.FileSystemObject")
Set outFile = fs.CreateTextFile("NetworkAdapterConfiguration.txt", True) strWinMgmt = "winmgmts:{impersonationLevel=impersonate}"
Set objNICs = GetObject( strWinMgmt ).InstancesOf( "Win32_NetworkAdapterConfiguration" )outFile.WriteLine("Begin to change DNS...")For Each objNIC In objNICs
If objNIC.IPEnabled Then
objNIC.SetDNSServerSearchOrder Array(STR_NEWDNS1,STR_NEWDNS2)
outFile.WriteLine(objNIC.Description & " ")
outFile.WriteLine("Change DNS ok")
objNIC.SetGateways Array(STR_GATEWAY)
outFile.WriteLine("Change gateway ok")
End If
Next
outFile.WriteLine("Change over")
02.using System.Collections.Generic;
03.using System.Text;
04.using System.Management;
05.
06.namespace ConsoleApplication1._
07.{
08. class Program
09. {
10. static void Main(string[] args)
11. {
12. ShowNetworkAdapterInfo();
13. SetNetworkAdapter();
14. ShowNetworkAdapterInfo();
15. Console.ReadKey();
16. }
17. /// <summary>
18. /// 设置网络适配器
19. /// </summary>
20. static void SetNetworkAdapter()
21. {
22. ManagementBaseObject inPar = null;
23. ManagementBaseObject outPar = null;
24. ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
25. ManagementObjectCollection moc = mc.GetInstances();
26. foreach (ManagementObject mo in moc)
27. {
28. if (!(bool)mo["IPEnabled"])
29. continue;
30.
31. //设置ip地址和子网掩码
32. inPar = mo.GetMethodParameters("EnableStatic");
33. inPar["IPAddress"] = new string[] { "192.168.1.9" };
34. inPar["SubnetMask"] = new string[] { "255.255.255.0" };
35. outPar = mo.InvokeMethod("EnableStatic", inPar, null);
36.
37. //设置网关地址
38. inPar = mo.GetMethodParameters("SetGateways");
39. inPar["DefaultIPGateway"] = new string[] { "192.168.1.1" };
40. outPar = mo.InvokeMethod("SetGateways", inPar, null);
41.
42. //设置DNS
43. inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
44. inPar["DNSServerSearchOrder"] = new string[] {"202.118.176.2" };
45. outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
46. break;
47. }
48. }
49. /// <summary>
50. /// 显示当前的ip 网卡 dns 等信息
51. /// </summary>
52. static void ShowNetworkAdapterInfo()
53. {
54. Console.WriteLine("****** Current Network Adapter Information ******");
55. ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
56. ManagementObjectCollection moc = mc.GetInstances();
57. foreach (ManagementObject mo in moc)
58. {
59. if (!(bool)mo["IPEnabled"])
60. continue;
61.
62. Console.WriteLine("{0}\n SVC: '{1}' MAC: [{2}]", (string)mo["Caption"],
63. (string)mo["ServiceName"], (string)mo["MACAddress"]);
64.
65. string[] addresses = (string[])mo["IPAddress"];
66. string[] subnets = (string[])mo["IPSubnet"];
67. string[] gateways = (string[])mo["DefaultIPGateway"];
68. string[] dnses = (string[])mo["DNSServerSearchOrder"];
69.
70. Console.WriteLine(" Addresses :");
71. foreach (string sad in addresses)
72. Console.WriteLine("\t'{0}'", sad);
73.
74. Console.WriteLine(" Subnets :");
75. foreach (string sub in subnets)
76. Console.WriteLine("\t'{0}'", sub);
77. Console.WriteLine(" Gateways:");
78. foreach (string gw in gateways)
79. Console.WriteLine("\t'{0}'", gw);
80.
81. Console.WriteLine(" DNS:");
82. foreach (string dns in dnses)
83. Console.WriteLine("\t'{0}'", dns);
84. }
85. }
86.
87. }
88.}
大网站同一个域名有很多ip做均衡,你希望是如何处理?我不知道别人给你的是思路,修改本机的DNS有什么用?你手工修改就行了,但是要修改成什么?难道是你要自己做个DNS服务器?
至于说清理下缓存,即使你清理了,但dns可不是只有你的机器上缓存,一路查询过来的都可能缓存,即使你一次都没ping过的域名,ping出来的结果也很可能是互联网上某个dns服务器上的缓存而已
ManagementBaseObject inPar = null;
ManagementBaseObject outPar = null;
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
不过还是劝你考虑一下你到底需要什么?修改客户端的dns是一种恶意软件才做的事。
要通过DNS查询IP,可以这样写(demo):using System;
using System.Net;namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var ipArray = Dns.GetHostAddresses("www.microsoft.com");
foreach (var ip in ipArray)
if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
Console.WriteLine(ip.ToString());
Console.ReadKey();
}
}
}
using System.Net.NetworkInformation;namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var pn = new Ping();
var result = pn.Send("www.google.com");
Console.WriteLine("ping {0} result {1}.", result.Address.ToString(), result.Status == IPStatus.Success ? "成功" : "失败");
Console.ReadKey();
}
}
}
nslookup然后输入你要的域名,使用默认的dns服务器
www.sina.com或者加上另外的dns服务器地址,比如google的8.8.8.8的地址
www.sina.com 8.8.8.8看看是不是实现你的需求,如果是,那就是你要实现类似nslookup的功能的软件了