как распечатать MAC-адрес

Я создал клиент-серверную программу, которая отображает 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;
}

0

Решение

Вы понимаете, что ваша заявленная цель в комментарии («я пытаюсь найти MAC-адрес любого компьютера, который подключается к серверу») невозможна? MAC-адреса имеют более низкий уровень, чем IP-адреса, они идентифицируют «медиа-порт», то есть место, где находится кабель.

Вы не можете получить MAC-адрес для клиента даже на другой стороне коммутатора, а тем более через Интернет.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]