0

我创建了一个显示客户端的 MAC 和 IP 地址的客户端服务器程序,并且我有一个获取计算机 MAC 地址的功能,但我无法在列表框中打印 MAC 地址。我创建了一个打印功能,该功能之前确实有效,但我更改了查找mac地址的代码,现在它不起作用(我也不知道我是否在正确的地方调用printMACaddress)。我有两个列表框 - 一个显示 IP 地址,另一个显示 MAC 地址。当我单击 IP 地址时,我希望显示该计算机的 MAC 地址,但现在它不显示。当我点击 IP 地址时没有任何反应

    void CmfcServerDlg::OnLbnSelchangeListClientaddr()
    {
        bool GetMACFromIP(BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH], const std::string &selected_ip_adr);
    }


    void CmfcServerDlg::PrintMACaddress(unsigned char MACData[])
        {
            CString

 strText;
        strText.Format("%02X-%02X-%02X-%02X-%02X-%02X\n",MACData[0], MACData[1], MACData[2], MACData[3], MACData[4], MACData[5]);
        m_ClientIdList.AddString(strText); 
    }


    bool CmfcServerDlg::GetMACFromIP(BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH], const std::string &selected_ip_adr)
    {
        IP_ADAPTER_INFO AdapterInfo[16];            
        DWORD dwBufLen = sizeof(AdapterInfo);       

        DWORD dwStatus = GetAdaptersInfo(           
            AdapterInfo,                            
            &dwBufLen);                             
        assert(dwStatus == ERROR_SUCCESS);          

        PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
        bool found = false;
        do {
            const IP_ADDR_STRING *addr_str = &pAdapterInfo->IpAddressList; 
            while(addr_str != NULL)
            {
              if(selected_ip_adr == addr_str->IpAddress.String) 
              {
                found = true;
                break;
              }
            }
            if(found)
            {
              memcpy(Address, pAdapterInfo->Address, MAX_ADAPTER_ADDRESS_LENGTH); 
              PrintMACaddress(pAdapterInfo->Address); //problem here
              break;
            }
            else
            {
                PrintMACaddress(pAdapterInfo->Address);
                pAdapterInfo = pAdapterInfo->Next;      
            }
        }
        while(pAdapterInfo);                        
        return found; 
    }
4

1 回答 1

1

您确实意识到您在评论中声明的目标(“我正在尝试查找连接到服务器的任何计算机的 MAC 地址”)是不可能的?MAC 地址比 IP 地址低级,它们标识“媒体端口”,即电缆所在的位置。

您甚至无法获取交换机另一端的客户端的 MAC 地址,更不用说通过 Internet 获取了。

于 2013-03-25T14:54:28.933 回答