怎样找到主机的远程服务器的ip
A. 如何获取本地和远程主机的IP及MAC地址
向大家介绍一下我们将如何获得一台主机的IP地址。在Win32 API中我们可以使用NetWork API完成这项工作,但是在.Net平台下我们应当如何做呢?其实操作方法与API差不多,只是大家要理解一下Namespace与Class。本站这方面的文章很多,关于Namespace与Class的内容就不介绍了。
.Net平台存在System.Net命名空间,其中的DNS类,提供了一些方法可以获取服务器的服务名或者是IP地址。DNS是一个静态类,所以它能够直接创建类实例。闲话少说,我们来看具体的程序:
namespace NKUtilities
{
using System;
using System.Net;
public class DNSUtility
{
public static int Main (string [] args)
{
String strHostName = new String ("");
if (args.Length == 0)
{
// 获得本地的IP地址
//首先获了本地机的主机名
strHostName = DNS.GetHostName ();
Console.WriteLine ("Local Machine''s Host Name: " + strHostName);
}
else
{
strHostName = args[0];
}
// 接着使用主机名,获取IP地址列表
// 一台主机可能不只一个IP哦,不要被某些人误导了,呵呵,想想以前的163与169就知道了
IPHostEntry ipEntry = DNS.GetHostByName (strHostName);
IPAddress [] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++)
{
Console.WriteLine ("IP Address {0}: {1} ", i, addr[i].ToString ());
}
return 0;
}
}
}
如果你想获得主机名,你可以使用不带参数的GetHostName方法,接着使用这个主机名作为参数交给GetHostByName方法,以获取IPAddress列表。最后是输出列表中的IP地址。
C#编程之 如何获取本地和远程主机的IP及MAC地址
利用dns类和WMI规范获取IP及MAC地址
在C#编程中,要获取主机名和主机IP地址,是比较容易的.它提供的Dns类,可以轻松的取得主机名和IP地址.
示例:
string strHostName = Dns.GetHostName(); //得到本机的主机名
IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IP
string strAddr = ipEntry.AddressList[0].ToString(); //假设本地主机为单网卡
在这段代码中使用了两个类,一个是Dns类,另一个为IPHostEntry类,二者都存在于命名空间System.Net中.
Dns类主要是从域名系统(DNS)中检索关于特定主机的信息,上面的代码第一行就从本地的DNS中检索出本地主机名.
IPHostEntry类则将一个域名系统或主机名与一组IP地址相关联,它与DNS类一起使用,用于获取主机的IP地址组.
要获取远程主机的IP地址,其方法也是大同小异.
在获取了IP地址后,如果还需要取得网卡的MAC地址,就需要进一步探究了.
这里又分两种情况,一是本机MAC地址,二是远程主机MAC地址.二者的获取是完全不同的.
在获取本机的MAC地址时,可以使用WMI规范,通过SELECT语句提取MAC地址.在.NET框架中,WMI规范的实现定义在System.Management命名空间中.
ManagementObjectSearcher类用于根据指定的查询检索管理对象的集合
ManagementObjectCollection类为管理对象的集合,下例中由检索对象返回管理对象集合赋值给它.
示例:
ManagementObjectSearcher query =new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration") ;
ManagementObjectCollection queryCollection = query.Get();
foreach( ManagementObject mo in queryCollection )
{
if(mo["IPEnabled"].ToString() == "True")
mac = mo["MacAddress"].ToString();
}
获取远程主机的MAC地址时,需要借用API函数SendARP.该函数使用ARP协议,向目的主机发送ARP包,利用返回并存储在高速缓存中的IP和MAC地址对,从而获取远程主机的MAC地址.
示例:
Int32 ldest= inet_addr(remoteIP); //目的ip
Int32 lhost= inet_addr(localIP); //本地ip
try
{
Int64 macinfo = new Int64();
Int32 len = 6;
int res = SendARP(ldest,0, ref macinfo, ref len); //发送ARP包
return Convert.ToString(macinfo,16);
}
catch(Exception err)
{
Console.WriteLine("Error:{0}",err.Message);
}
return 0.ToString();
但使用该方式获取MAC时有一个很大的限制,就是只能获取同网段的远程主机MAC地址.因为在标准网络协议下,ARP包是不能跨网段传输的,故想通过ARP协议是无法查询跨网段设备MAC地址的。
示例程序:
using System.Net;
using System;
using System.Management;
using System.Runtime.InteropServices;
public class getIP
{
[DllImport("Iphlpapi.dll")]
private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);
//获取本机的IP
public string getLocalIP()
{
string strHostName = Dns.GetHostName(); //得到本机的主机名
IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IP
string strAddr = ipEntry.AddressList[0].ToString();
return(strAddr);
}
//获取本机的MAC
public string getLocalMac()
{
string mac = null;
ManagementObjectSearcher query =new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration") ;
ManagementObjectCollection queryCollection = query.Get();
foreach( ManagementObject mo in queryCollection )
{
if(mo["IPEnabled"].ToString() == "True")
mac = mo["MacAddress"].ToString();
}
return(mac);
}
//获取远程主机IP
public string[] getRemoteIP(string RemoteHostName)
{
IPHostEntry ipEntry = Dns.GetHostByName(RemoteHostName);
IPAddress[] IpAddr = ipEntry.AddressList;
string[] strAddr = new string[IpAddr.Length];
for (int i=0;i {
strAddr[i] = IpAddr[i].ToString();
}
return(strAddr);
}
//获取远程主机MAC
public string getRemoteMac(string localIP, string remoteIP)
{
Int32 ldest= inet_addr(remoteIP); //目的ip
Int32 lhost= inet_addr(localIP); //本地ip
try
{
Int64 macinfo = new Int64();
Int32 len = 6;
int res = SendARP(ldest,0, ref macinfo, ref len);
return Convert.ToString(macinfo,16);
}
catch(Exception err)
{
Console.WriteLine("Error:{0}",err.Message);
}
return 0.ToString();
}
public static void Main(string[] args)
{
getIP gi = new getIP();
Console.WriteLine("本地网卡信息:");
Console.WriteLine(gi.getLocalIP() + " - " + gi.getLocalMac());
Console.WriteLine("/n/r远程网卡信息:");
string[] temp = gi.getRemoteIP("scmobile-tj2");
for(int i=0;i {
Console.WriteLine(temp[i]);
}
Console.WriteLine(gi.getRemoteMac("192.168.0.3","192.168.0.1"));
}
}
可以用.Net的DNS类来获取一个主机名或一个给定主机的IP地址。要想在程序中使用DNS类,就需要包含System.Net:
Include System.Net Reference
比如说想获取http://www.mindcracker.com/的IP地址,以下代码就会完成这个任务:
// Call DNS.GetHostName to get IPHostEntry and get the IP address list.
IPHostEntry ipEntry = DNS.GetHostByName ("www.mindcracker.com");
IPAddress [] IpAddr = ipEntry.AddressList;
for (int i = 0; i < IpAddr.Length; i++){
Console.WriteLine ("IP Address {0}: {1} ", i, IpAddr[i].ToString ());
}
另外,使用无参数的GetHostName可以返回本地机器的主机名:
string strHostName = DNS.GetHostName ();
然后将这个主机名作为参数传递给GetHostByName,就可以获取本地机器的IP地址信息。
B. 有一主机,没有显示器,不知道他的IP,现在想远程上它,有什么办法可以先获取它的IP
把他网线接到你电脑上用抓包软件抓包,一般可以看到你自己电脑的IP和他的IP
C. 濡备綍杩灭▼浜戜富链篿p浜戜富链烘庝箞杩灭▼
濡备綍杩灭▼锏诲綍浜戜富链猴纻
鎭ㄥソ锛岃繙绋嬬橱褰曚簯涓绘満链変袱绉嶆柟寮忋傞栧厛鐢佃剳寮濮-绋嫔簭-闄勪欢-阃氲-杩灭▼妗岄溃锛岀劧钖庡彧闇杈揿叆浣犺佺橱褰旷殑浜戜富链虹殑IP銆佺敤鎴峰悕銆佸瘑镰佸嵆鍙銆傚彟涓绉嶆柟寮忔槸:寮濮-杩愯-杈揿叆mstsc锛屼篃浼氲烦杞鍒拌繙绋嬫岄溃锛岀劧钖庤緭鍏ョ浉搴旂殑淇℃伅銆傚笇链涙垜镄勫洖绛斿逛綘链夊府锷┿傚傛灉鎭ㄥ规湇锷″櫒链変换浣旷枒闂锛岃烽殢镞惰仈绯绘垜銆阒块噷浜戞湇锷″櫒娌℃湁鍏缃慽p镐庝箞杩炴帴锛
windows镊甯﹁繙绋嬫岄溃杩炴帴锛岀劧钖庣敤涓绘満缁欎綘镄勫叕缃慖P鍜屽瘑镰佸幓锏婚檰銆
褰煎害浜戣惧囧备綍瀹夎咃纻
1銆侀栧厛鍑嗗囧ソ褰煎害浜戞湇锷″櫒锛屼簯链嶅姟鍣ㄥ氩寘钖镄勫熀链閰岖疆灏辨槸cup銆佸唴瀛樸佺‖鐩樼瓑锘烘湰閰岖疆銆
2銆佸埄鐢ㄤ簯链嶅姟鍣ㄧ殑IP鍦板潃锛岃处鎴峰悕锛屽瘑镰佹潵锏诲綍銆
3銆佺敤鐢佃剳𨱒ョ橱褰曚簯链嶅姟鍣锛屼粠鐢佃剳妗岄溃镓揿紑钬滆繙绋嬫岄溃杩炴帴钬濄
4銆佽緭鍏ヤ簯链嶅姟鍣ㄧ殑IP鍦板潃锛岀偣鍑昏繛鎺ャ
5銆佽繛鎺ヤ箣钖庯纴杈揿叆璐﹀彿鍜屽瘑镰併
6銆佺橱褰曟垚锷熶箣钖庯纴鍦ㄧ数鑴戞岄溃涓婂氨浼氩嚭鐜颁簯涓绘満镎崭綔妗岄溃浜嗐
浜戜富链烘庝箞鐢ㄦ坠链鸿繛鎺ワ纻
鍙浠ュ湪镓嬫満涓婇溃瀹夎呰繙绋嬫岄溃锏诲綍宸ュ叿.鐢ㄦ潵杩炴帴浜戜富链.鏂规硶寰堢亩鍗.涓璇曞氨浼.浣嗘坠链虹殑缃戠粶姣旷珶涓嶅傜数鑴.鍐嶅姞涓婃病链夐紶镙囨搷浣沧柟渚.鏁翠綋鏄娌℃湁鐢佃剳杩欎箞濂界敤镄.
鍗庝负浜戞湇锷″櫒镐庝箞杩灭▼锏诲綍锛
鍗庝负浜戞湇锷″櫒杩灭▼锏诲綍锛氩傛灉浣犱拱浜嗕簯寮规ф湇锷″櫒锛岃呰繃镎崭綔绯荤粺镄勬柟娉曪细锏诲綍缃戦〉鍗庝负浜戯纴椤朵笂镣光沧带鍒跺彴钬--钬沧湇锷″垪琛ㄢ--钬滃脊镐т簯链嶅姟鍣‥CS钬濓纴鐪嫔埌宸茶喘涔扮殑链嶅姟鍣ㄥ垪琛锛屽悗闱涓鍒楁湁钬滆繙绋嬬橱褰曗濓纴镣硅繘铡伙纴鎸夋寚绀烘搷浣滐纴鐢佃剳鎼溾滆繙绋嬫岄溃钬濓纴杈揿叆IP锛岀敤鎴峰悕Administrator锛屽瘑镰侊纴锏诲綍銆
鑻规灉镓嬫満濡备綍杩灭▼绠$悊阒块噷浜戜富链猴纻
灏忛笩浜戞湇锷″櫒niaoyun瀹炰緥鍒涘缓濂戒箣钖庯纴鎭ㄥ彲浠ヤ娇鐢ㄤ互涓嬩换镒忎竴绉嶆柟寮忕橱褰曟湇锷″櫒锛氲繙绋嬫岄溃杩炴帴(,MSTSC)锛氶噰鐢ㄨ繖绉嶆柟寮忕橱褰曪纴璇风‘淇濆疄渚嬭兘璁块梾鍏缃戙傚傛灉鍦ㄥ垱寤哄疄渚嬫椂娌℃湁璐涔板甫瀹斤纴鍒欎笉鑳戒娇鐢ㄨ繙绋嬫岄溃杩炴帴銆
绠$悊缁堢疺NC锛氭棤璁烘偍鍦ㄥ垱寤哄疄渚嬫椂鏄钖﹁喘涔颁简甯﹀斤纴鍙瑕佹偍链鍦版湁缃戦〉娴忚埚櫒锛岄兘鍙浠ラ氲繃绠$悊鎺у埗鍙扮殑绠$悊缁堢锏诲綍瀹炰緥銆
浣跨敤杩灭▼妗岄溃杩炴帴(MSTSC)锏诲綍瀹炰緥镓揿紑寮濮嬭彍鍗>杩灭▼妗岄溃杩炴帴锛屾垨鍦ㄥ紑濮嬭彍鍗>鎼灭储涓杈揿叆mstsc銆
涔熷彲浠ヤ娇鐢ㄥ揩鎹烽敭Win+R𨱒ュ惎锷ㄨ繍琛岀獥鍙o纴杈揿叆mstsc钖庡洖杞﹀惎锷ㄨ繙绋嬫岄溃杩炴帴銆
鍦ㄨ繙绋嬫岄溃杩炴帴瀵硅瘽妗嗕腑锛岃緭鍏ュ疄渚嬬殑鍏缃慖P鍦板潃銆傚崟鍑绘樉绀洪夐”銆
杈揿叆鐢ㄦ埛钖嶏纴濡傚皬楦熶簯榛樿や负niaoyun銆傚崟鍑诲厑璁告垜淇濆瓨鍑鎹锛岀劧钖庡崟鍑昏繛鎺ャ傝繖镙蜂互钖庣橱褰曞氨涓嶉渶瑕佹坠锷ㄨ緭鍏ュ瘑镰佷简銆
D. 镐庝箞镆ョ湅缃戠珯链嶅姟鍣ㄧ殑IP鍦板潃锛
濡备綍妫镆ョ绣绔欐湇锷″櫒镄処P鍦板潃
濡备綍镆ョ湅缃戠珯镄刬p鍦板潃1.镓揿紑鐢佃剳锛屾寜winr镓揿紑钬滆繍琛屸濓绂
2.杩愯屾椂杈揿叆钬渃md钬濇墦寮锛
3.镓揿紑钖庯纴杈揿叆ping缃戠珯镄勫烟钖嶅嵆鍙镓惧埌銆
渚嫔傦纴杈揿叆锻戒护pingfuyeor.com锛岃繖鏄涓轰简镆ヨ㈣ョ绣绔椤湪fuyeor.com镄勫烟钖嶈В鏋愮殑IP銆
鍙傝冭祫鏂:IP鍦板潃鏄疘P鍗忚鎻愪緵镄勭粺涓鍦板潃镙煎纺銆傚畠涓轰簰镵旂绣涓婄殑姣忎釜缃戠粶鍜屾疮涓涓绘満鍒嗛厤涓涓阃昏緫鍦板潃锛屼互灞忚斀鐗╃悊鍦板潃镄勫樊寮伞
鍦ㄤ簰镵旂绣涓锛屼负浜嗗尯鍒嗗叏涓栫晫镄勭数鑴戯纴姣忓彴鐢佃剳閮借鍒嗛厤浜嗕竴涓鐗规畩镄勫彿镰併傛瘆濡备綘瑕佽块梾fuyeor缃戠珯锛屼綘闇瑕佺煡阆揻uyeor缃戠珯镄処P鍦板潃銆
铹惰岋纴IP鍦板潃鏄涓闀夸覆镞犺亰镄勬暟瀛椼备负浜呜╀汉瀹规槗璁颁綇锛岀绣绔欓兘链夌绣鍧(鎴栧烟钖)锛屾瘆濡傗滀簩绾у烟钖嶃傜忕害灏斻傛牴锘熷悕钬濄
Fuyeor鏄锘熷悕镄勪富浣撱傛牴锘熷悕鏄痗om锛宑n锛屼簩绾у烟钖岖被浼间簬涓変釜W銆
𨱒ユ簮:锏惧害锏剧
链嶅姟鍣ㄥ彲浠ヨ瘑鍒瀹㈡埛绔镄刬p鍦板潃钖楋纻
链嶅姟鍣ㄥ彲浠ヨ瘑鍒瀹㈡埛绔镄処P鍦板潃濡傛灉瀹㈡埛绔浣跨敤浜嗕唬鐞呜蒋浠讹纴鍒欐湇锷″櫒銮峰彇鍒扮殑鏄浠g悊链嶅姟鍣ㄧ殑IP鍦板潃浠ユゆ潵杈惧埌鍖垮悕璁块梾镄勭洰镄
链嶅姟鍣ㄦ庝箞镆ョ湅璁块梾璁板綍锛
链嶅姟鍣ㄦ煡鐪嬭块梾璁板綍鏂规硶濡备笅锛
1.
寮濮--绠$悊宸ュ叿--浜嬩欢镆ョ湅鍣--绯荤粺鎴栬呮带鍒堕溃𨱒--绠$悊宸ュ叿--浜嬩欢镆ョ湅鍣--绯荤粺銆
2.
鍦ㄨ繙绋嫔㈡埛绔,杩愯孖E娴忚埚櫒,鍦ㄥ湴鍧镙忎腑杈揿叆钬渉ttps://Win2003链嶅姟鍣↖P鍦板潃:8098钬,濡傗渉ttps://192.168.1.1:8098钬濄傚湪寮瑰嚭镄勭橱褰曞硅瘽妗嗕腑杈揿叆绠$悊锻桦笎鍙峰拰瀵嗙爜銆
涓存椂ip鍦板潃濡备綍璁块梾锛
1銆侀栧厛闇瑕佽繘鍏ヨ佽块梾镄勬湇锷″櫒銆
2銆佽繘鍏ユ湇锷″櫒鐢婚溃锛屾墦寮cmd绐楀彛銆
3銆佸湪绐楀彛涓杈揿叆ipconfig锛屽氨鍙浠ョ湅鍒板綋鍓嶆湇锷″櫒镄処P鍦板潃銆
4銆佹湁浜唅p鍦板潃钖,杩橀渶瑕佹垒鍒版带鍒堕溃𨱒匡纴镓惧埌绯荤粺鍜屽畨鍏ㄣ
5銆侀夋嫨鍏佽歌繙绋嬭块梾銆
6銆佸啀瑕佽繛鎺ユ湇锷″櫒镄勮$畻链轰笂镣规寜win+r镓揿紑杩愯岃緭鍏mstsc镣瑰嚮纭瀹氥
7銆佽緭鍏ュ瑰簲镄勬湇锷″櫒IP鍦板潃钖,灏卞彲浠ョ敤IP𨱒ヨ块梾链嶅姟鍣ㄤ简銆
8銆佸氨阃氲繃ip璁块梾鍒版湇锷″櫒浜嗐
濡备綍鐭ラ亾鐢ㄥ弸链嶅姟鍣ㄧ殑IP鍦板潃鏄澶氩皯锛
1棣栧厛瑕佺‘淇濇湇锷″櫒浠ュ强瀹㈡埛绔镄勮蒋浠剁殑瀹夎呮病链夊簲鐢ㄩ敊璇銆傚嵆链嶅姟鍣ㄩ偅瑕佽兘澶熷垱寤鸿处濂楋纴浠ュ强寮钖璐﹀楃殑妯″潡镄勫姛鑳姐傚悓镞惰佽兘澶熺橱褰曡蒋浠惰繘琛屼笟锷℃搷浣溿
2镆ョ湅链嶅姟鍣ㄧ殑IP鍦板潃銆倃in7鐢佃剳鍙充笅瑙掓垒鍒拌繍琛岋纴杈揿叆cmd铹跺悗鎸夊洖杞﹂敭锛屽彲浠ョ湅鍒颁竴涓榛戣壊镄勫硅瘽妗嗐傚湪閲岄溃杈揿叆IPconfig锛岀劧钖庡啀锲炶溅灏卞彲浠ョ湅鍒版湇锷″櫒镄処P鍦板潃銆备竴鑸涓192.168.0.鏁板瓧锛屾垨钥192.168.1.鏁板瓧銆
3镆ョ湅鐢佃剳镄勫悕瀛楋纴鎴戠殑鐢佃剳钬斺斿彸鍑诲睘镐р斺旈珮绾х郴缁熻剧疆钬斺旇$畻链哄悕瀛椼
4钖屾椂瑕佹妸鐢佃剳镄勯槻𨱔澧欑粰鍏抽棴浜嗭纴瑕佸厑璁稿叾浠栫数鑴戣块梾浣犵殑鐢佃剳涓婇溃镄勬暟鎹銆傚紑濮嬧斺旀带鍒堕溃𨱒库斺攚indows阒茬伀澧欌斺旀墦寮鎴栬呭叧闂瓀indow阒茬伀澧欌斺旀妸阒茬伀澧欑粰鍏抽棴浜嗗嵆鍙銆
5鍦ㄥ㈡埛绔镄勭数鑴戜笂锛屽湪C鐩樷斺攚indows钬斺攕ystem32钬斺摅rivers钬斺攅tc-hosts,鐢ㄨ颁簨链镓揿紑锛屽湪链鍏堥溃杈揿叆链嶅姟鍣ㄧ殑IP鍦板潃浠ュ强鐢佃剳钖嶅瓧銆
6涓鑸𨱍呭喌锛岃繖镙疯剧疆濂戒简灏卞彲浠ラ摼鎺ヤ笂链嶅姟鍣ㄤ简锛屽傛灉杩樻槸涓嶈岋纴璇风洿鎺ヨ窡杞浠跺㈡湇娌熼氾纴璁╀粬浠缁欐偍澶勭悊銆