如何打印MAC地址

时间:2013-03-25 13:58:29

标签: c++ udp client-server ip-address mac-address

我创建了一个客户端服务器程序,显示客户端的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; 
    }

1 个答案:

答案 0 :(得分:1)

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

您无法在交换机的另一端获取客户端的MAC地址,更不用说在互联网上了。