none
掃描區域網路內內腦的IP與名稱,得到錯誤訊息,無法識別這台主機。 RRS feed

  • 問題

  • 掃描區域網路內內腦的IP與名稱,得到錯誤訊息,無法識別這台主機。

    錯誤訊息: System.Net.Sockets.SocketException: 無法識別這台主機。 

    我在我自己這台電腦測試是OK的, 但是 把程式拿到朋友的環境測試時,卻出現無法識別這台主機的錯誤訊息 我懷疑錯誤是在 Dns.GetHostEntry這一段呼叫 

    我自己的測試環境是 WINDOWS XP 跟 WINDOWS 2000 以及 一台 WINDOWS SERVER 2000 
    有問題的電腦環境 是 兩台 WINDOWS XP 

    程式的作法是 先用 My.Computer.Network.Ping(Ip) 去確認該台電腦是否有回應 
    如果有回應的話 再用 Dns.GetHostEntry(IPadress).HostName.ToString去抓電腦名稱 

    以下為程式碼片段 

    If 掃描IP(IPadress) = True Then  
        ComputerNameString = Dns.GetHostEntry(IPadress).HostName.ToString 

        If ComputerNameString = IPadress Then 
            ListBox1.Items.Add(IPadress & " - " & "無法解析") 
        Else 
            ListBox1.Items.Add(IPadress & " - " & ComputerNameString) 

        End If 

    End If 


    ' 確認IP 有回應的副程式 

    Function 掃描IP(ByVal Ip As String) As Boolean 

    Application.DoEvents() 

    If My.Computer.Network.Ping(Ip) Then 
         Return True 
    Else 
         Return False 
    End If 

    End Function
    2009年9月29日 下午 06:36

解答

所有回覆

  • hi
    那兩台XP是否有開啟防火牆呢?有開啟的話 ICMP設定是否有勾選允許連入回應

    另外可加入Try Catch block丟出Exception
    一般來說得到正確IP,Dns.GetHostEntry就不會有Exception
    所以我猜應該在ping就有Exception了

    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年9月29日 下午 10:51
  • 請教一下,什麼叫 "內腦" ?
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    如果只會用 "看" 的學程式,那不如早點改行,以免誤己一生...
    若不想快點得到解答,可以儘量把問題寫模糊一點,愈模糊愈不會得到解答。
    2009年9月30日 上午 12:23
    版主
  • 請參考MSDN
    http://msdn.microsoft.com/zh-tw/library/ms143998.aspx

    如果找不到主機名稱,便會傳回 SocketException 例外狀況以及 11001 的值 (Windows Sockets 錯誤 WSAHOST_NOT_FOUND)。如果 DNS 伺服器沒有回應,可能會傳回這個例外狀況。如果名稱不是正式主機名稱或別名,或在查詢的資料庫中找不到,也可能會傳回這個例外狀況。
    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守
    2009年9月30日 上午 01:54
    版主
  • >>請教一下,什麼叫 "內腦" ?

    抱歉,是筆誤。
    2009年10月1日 下午 05:44
  • >>那兩台XP是否有開啟防火牆呢?有開啟的話 ICMP設定是否有勾選允許連入回應

    我自己的 防火牆有開啟icmp 回應
    我自己本機執行時,ping ip 是 Ok 的, 要取得hostname 時 如果找不到會回應原先的ip , 因為我的工作群組看不到任何電腦(只能用 UNC 路徑連),所以只有本機可以回應電腦名稱,其他網路上的電腦 都無法回應 Hostname , 但不會出錯,只是傳回原電腦ip

    昨天 把這程式又拿到 另外一個朋友的環境測試 ,結果仍然是一樣,出現 無法識別這台主機的Exception。



    >另外可加入Try Catch block丟出Exception

    有加

    2009年10月1日 下午 05:51
  • 開啟防火牆有勾選連入回應,ping ok 很正常(那出錯的電腦,是否設定一樣??)
    UNC連線和你的工作群組應該無關(只要在同一網段內即可)

    測試IP難道有跨網段嗎??

    local(192.168.1.100)執行YourAP(ping 192.168.100.11)=>找不到是很正常的
    想要不同網段可以互通,須透過router來幫你

    在有問題的電腦上,其實你可以先用windows 自帶工具(cmd=>ping test ip)來確認對方回應是否OK
    也可以ping -a test ip確認回應訊息是否有帶 電腦名稱 [test ip]
     
    在程式中順便記錄執行階段log
    如ping 階段有exception導到ap.log(ping 192.168.1.100 ---失敗)
    gethostname階段有exception導到ap.log(gethostname **** ---失敗)
    這樣就更清楚是那個環節掛了

    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年10月1日 下午 11:44
  • 發生問題的 ip 用命令提示字元打下面的文字,把結果貼出來:
    ping 問題ip
    nslookup 問題ip
    如果問題發生在 nslookup ,請說明內部網路的設定,例如:WINS/DNS 伺服器、NetBIOS、... 等。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年10月2日 上午 12:33
  • >>請教一下,什麼叫 "內腦" ?

    抱歉,是筆誤。

    文章貼出來是可以修改的,如果發現有錯字,請記得要改一下。
    我只是特別點出來而已,若是真的看不懂的人,大概只能用猜的。
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    如果只會用 "看" 的學程式,那不如早點改行,以免誤己一生...
    若不想快點得到解答,可以儘量把問題寫模糊一點,愈模糊愈不會得到解答。
    2009年10月2日 上午 12:40
    版主