Ⅰ 如何獲取本地和遠程主機的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地址信息。
Ⅱ Windows7中如何限制遠程桌面的IP
方法一、
1、打開Windows自帶的防火牆;
2、開放允許例外,選擇遠程桌面->編輯,選中遠程桌面服務->更改范圍, 選中自定義列表,填入允許訪問的IP。
方法二、
DOS命令限制遠程桌面的登陸IP
添加埠號為8081的遠程IP限制
netsh firewall add portopening ALL 8081 DNS ENABLE CUSTOM 157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0
為埠號8081設置可防問的遠程IP
netsh firewall set portopening ALL 8081 遠程桌面 ENABLE CUSTOM 157.61.0.1,172.17.0.0/255.255.255.0
刪除埠號為8081的遠程限制
netsh firewall delete portopening TCP 8081
方法三、
1、CMD運行 gpedit.msc 打開組策略控制台;
2、展開 計算機配置->管理模板->網路->網路連接->windows防火牆->域配置文件 找到 允許遠程桌 面例外,選擇允許, 再填入相應IP列表;
3、同樣展開 計算機配置->管理模板->網路->網路連接->windows防火牆->標准配置文件
4、CMD運行 gpupdate /force,如未生效再運行 gpupdate /target:computer.
注意:不要啟用防火牆高級->網路連接設置->相應網路連接->設置中的遠程桌面選項,否則上面的設定將無效。
Ⅲ 如何使用遠程桌面連接.連接到已知IP的計算機上去
外網連接必須知道的IP地址,一般是固定的,或做DDNS的,需要連接的電腦必須做好遠程連接的設置。
1、首先需要在被遠程的電腦上開啟遠程桌面功能,選中桌面上的計算機或者我的電腦,右鍵選擇屬性。
(3)如何指定遠程伺服器的IP地址擴展閱讀:
當某台計算機開啟了遠程桌面連接功能後我們就可以在網路的另一端控制這台計算機了,通過遠程桌面功能我們可以實時的操作這台計算機,在上面安裝軟體,運行程序,所有的一切都好像是直接在該計算機上操作一樣。
這就是遠程桌面的最大功能,通過該功能網路管理員可以在家中安全的控制單位的伺服器,而且由於該功能是系統內置的所以比其他第三方遠程式控制制工具使用更方便更靈活。
但是,由於WINDOWS遠程桌面需要被控端電腦有獨立的IP地址,且對使用者的電腦水平有較高的要求,因此不太適合普通用戶的使用。
Ⅳ 伺服器如何開遠程
1、在電腦桌面上,滑鼠單擊【開始】,移動到【所有程序上】
Ⅳ 如何指定遠程伺服器的ip地址
到這個文件的目錄里,一般找開始叫 setup之類的後綴為 ini的配置文件查看。。總之只要是ini後綴的文件全部都查看下,如果還沒就找找看有沒有其他的標識為伺服器之類的文件。。