前天有大学同学问到这个问题,据说寻觅了好久:
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;
}
问题二尚无头绪,借宝地问一下各位前辈有没有知道解决方案的?谢谢啦!