나는 클라이언트의 MAC 주소와 IP 주소를 표시하는 클라이언트 서버 프로그램을 만들었으며 컴퓨터의 MAC 주소를 가져 오는 기능이 있지만 컴퓨터의 MAC 주소를 인쇄하는 데 문제가 있습니다. 리스트 박스. 이전에 작동했던 인쇄 기능을 만들었지 만 Mac 주소를 찾는 코드를 변경하고 현재 작동하지 않습니다 (올바른 위치에서 printMACaddress를 호출하는지 알 수 없습니다). 두 개의 목록 상자가 있습니다. 하나는 IP 주소를 표시하고 다른 하나는 MAC 주소를 표시합니다. 내가 IP 주소를 클릭하면 해당 컴퓨터의 MAC 주소가 표시되지만 지금은 표시되지 않습니다. 내가 IP 주소MAC 주소를 인쇄하는 방법
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;
}
* "이전에 작동했던 인쇄 기능을 만들었지 만 MAC 주소를 찾는 코드를 변경했으나 작동하지 않습니다"* MAC 주소를 찾는 코드가 변경된 이유는 무엇입니까? – m0skit0
원래 코드는 현재 컴퓨터의 MAC 주소 만 찾는 것이기 때문에 서버에 연결하는 모든 컴퓨터의 MAC 주소를 찾으려고하기 때문에. 목록 상자 이벤트 처리기에서 이전 코드를했지만 지금은 주소를 찾기위한 별도의 함수를 만들었습니다. –
기본적으로 문제는 인쇄 기능이 새 함수에서 작동하지 않는 것입니다. 이유는 모르겠습니다. –