none
請問在 VB2005 中, 如何得知對方 MAC Address? RRS feed

  • 問題

  • 各位好:

    已知對方 IP, 且同在一個 subnet 下 (就是使用 arp 可以看得到對方 MAC Address),

    那已 VB2005 來說, 要如何寫, 可以得到對方的 MAC Address 呢?

    謝謝.

    2007年7月28日 上午 08:05

解答

所有回覆

  • HI,

     

    您可以使用WMI:
    連接到其他的電腦( http://msdn2.microsoft.com/en-us/li...ementscope.aspx )
    查詢MAC address( http://www.eggheadcafe.com/articles/20030511.asp )

     

    tihs

    2007年7月30日 上午 02:40
  • 各位好。經過了一年多,小弟還是回來再次詢問這個問題。。。

     

    我看過大部分的回答,都是透過 DOS Command 去 ARP 出對方的 MAC Address,或是以  WMI 去取得。

     

    為了避免對方拒絕 遠端 WMI 存取,所以我選擇自己寫了段程式,使用 DOS 去 ping 完後取 arp -a 抓 mac.

     

    但,這樣做效率有點差。

    {

    ps. 使用這個程式的網路環境不太一樣, 幾台電腦接在 HUB 上 (不是ip分享器喔)

        有設定 IP / submask / gateway 設在 server 的 IP 上

        但沒有 DNS

        以 dos 實際上 ping 不到對方, 但是網芳可以搜尋到

        雖然 dos ping 不到, 但是 ping 過之後, arp -a 卻可以看得到 mac address

        有點神奇... 所以效率是卡在 ping 那邊, 無回應, 等很久.

    }

     

    請問,沒有更好的辦法了嗎?

     

    謝謝指教。

    2008年11月3日 上午 03:55
  • 2008年11月3日 上午 05:16
    版主
  • 非常感謝您的回答。

     

    我有找到一篇類似的,也是使用 SendARP() 去做。

    http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/9971c7f2-3145-4a76-a3b4-80b900eb8296

     

    不過他是用 C# 去寫的。

     

    當然我有嘗試去轉成 VB,不過遇到最後面的 class 部分... 不會改了。

    您的程式碼,我也是卡在

     

    <DLLIMPORT("WSOCK32.DLL", ) EntryPoint:="inet_addr" CharSet:="CharSet.Ansi,">

     

    這一行上面。這邊我不知道該怎麼做。

     

    放在 module 裡面不對(會出現藍色蚯蚓,說 DLLIMPORT 未定義)

    這邊該怎麼「設定」啊?

     

    或是說,像我提到的那個連結(如下的部分),該怎樣改成讓 VB 能使用呢?或是有什麼設定需增加的?

     

    static class NativeMethods

    {

    [System.Runtime.InteropServices.DllImport("Iphlpapi.dll", EntryPoint="SendARP")]

    internal extern static Int32 SendArp(Int32 destIpAddress, Int32 srcIpAddress,

    byte[] macAddress, ref Int32 macAddressLength);

    }

     

    謝謝您。

    2008年11月3日 上午 06:21
  • 加入 InteropServices 命名空間或是使用完整的物件名,也就是:

    System.Runtime.InteropServices.DllImport

     

    若使用完整物件名,則包含 CharSet 都要用完整物件名。

     

    我個人偏好用完整物件名,這樣原始碼拷貝時,才不需要去 Imports 相關的命名空間。

    2008年11月3日 上午 07:33
  • ...

    上面連結不是有已經寫好的..? 是不能使用嗎?

     

    2008年11月3日 上午 08:47
    版主