2014-02-26 69 views
1
_Printers = new PrintServer().GetPrintQueues(new[] { 
    EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections}); 

上述代碼允許我獲取可供我打印的打印機列表。一個打印機描述的是如下:C#瞭解打印機的主機名和IPAddress

\\EYZR370\HP Color LaserJet 2605dn,HP Universal Printing PCL 6 (v5.1), 

現在我試圖找到打印機的IP地址,使用以下方法手動:

1 - >進入控制面板
2- >查看設備和打印機
3->上於HP Color LaserJet 2605dn和選擇打印機屬性
4->右鍵單擊選擇端口選項卡,查看IP地址

現在,它顯示了ip地址,例如192.157.6.8

我想知道是否192.157.6.8 == EYZR370?

所以我嘗試以下方法:

string hostName = System.Net.Dns.GetHostEntry("192.157.6.8").HostName; 

令人驚訝的是hostName有,我已經不知道什麼是關於另一個字符串值。

任何人都可以解釋我的情況是什麼?

更新:

我用下面的方式

IPHostEntry hostEntry; 

    hostEntry = Dns.GetHostEntry("EYZR370"); 

    //you might get more than one ip for a hostname since 
    //DNS supports more than one record 

    if (hostEntry.AddressList.Length > 0) 
    { 
     //var ip = hostEntry.AddressList[0]; 
    } 

我可以看到有對hostEntry.AddressList 6點的數據,但他們都不匹配192.157.6.8做了另一個測試?

回答

0

HostName屬性返回主要主機名。

您可能想查看Aliases屬性,該屬性返回可能的別名列表。如果您的計算機有多個解析爲192.157.6.8的DNS名稱,則可以在上述屬性中找到它。

您可能還想嘗試類似(雖然已過時)的方法,如Dns.ResolveDns.GetHostByAddress。有些人報告說這些方法的工作方式不同。

打印機配置是否正確?看來打印機沒有主機名或者DNS配置不正確?或者,也許你完全錯了名字?你有沒有訪問其網頁控制面板?

+0

我也試過了,'Aliases'返回null –

+0

你試過解決'EYZR370'到IP地址嗎? – Howie

+0

請查看我的更新後的問題,看看我是否使用正確的方式查找IP地址 –