如何通过打印机之网络名称获取其IP地址

如何通过打印机之网络名称获取其IP地址

  前天有大学同学问到这个问题,据说寻觅了好久:
  1、如何根据网络打印机的名字,获取该打印机的IP;
  2、如何从shd文件获取打印相关的信息;
 
  问题一与“查找网络上服务器的ip地址”是相同的问题,比如查找g.cn的ip地址。以下假定网络打印机名称为"\\printer",则可通过以下代码获取其ip地址。
#include  < iostream >
#include 
< WinSock2.h >
#pragma comment(lib, 
" Ws2_32 " )

int  main( int  argc,  char *  argv[])
{
    WSADATA wsaData;
    
const   int  err_code =  WSAStartup(MAKEWORD( 2 , 2 ), & wsaData);
    
if  ( 0 ==  err_code)
    {
        hostent
*  pHost =  gethostbyname( " printer " );

        
if  (NULL !=  pHost)
        {
            sockaddr_in   sa; 
            
for ( int  i = 0 ; pHost -> h_addr_list[i];  ++ i)
            { 
                memcpy(
& sa.sin_addr.s_addr, pHost -> h_addr_list[i], pHost -> h_length);
                std::cout
<< " IP=  " <<  inet_ntoa(sa.sin_addr) <<  std::endl;
            }  
        }
    }


    system(
" pause " );
    
return   0 ;
}

   问题二尚无头绪,借宝地问一下各位前辈有没有知道解决方案的?谢谢啦!




你可能感兴趣的:(如何通过打印机之网络名称获取其IP地址)