2013-03-25 4 views
0

나는 클라이언트의 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; 
    } 
+2

* "이전에 작동했던 인쇄 기능을 만들었지 만 MAC 주소를 찾는 코드를 변경했으나 작동하지 않습니다"* MAC 주소를 찾는 코드가 변경된 이유는 무엇입니까? – m0skit0

+0

원래 코드는 현재 컴퓨터의 MAC 주소 만 찾는 것이기 때문에 서버에 연결하는 모든 컴퓨터의 MAC 주소를 찾으려고하기 때문에. 목록 상자 이벤트 처리기에서 이전 코드를했지만 지금은 주소를 찾기위한 별도의 함수를 만들었습니다. –

+0

기본적으로 문제는 인쇄 기능이 새 함수에서 작동하지 않는 것입니다. 이유는 모르겠습니다. –

답변

1

을 클릭하면 아무 반응이 없습니다 당신은 코멘트에 명시된 목표는 가능하지 않다 ("내가 서버에 연결하는 컴퓨터의 MAC 주소를 찾기 위해 노력하고있다") 실현합니까? MAC 주소는 IP 주소보다 하위 수준이므로 케이블이있는 "미디어 포트"를 식별합니다.

스위치의 다른쪽에있는 클라이언트의 MAC 주소를 인터넷을 통해 훨씬 적게받을 수 있습니다.

+0

인터넷을 사용하고 있지 않습니다. UDP 연결을 사용하고 있습니다. 이 프로그램은 인터넷 없이도 작동 할 수 있습니다. –

관련 문제