前天有大學同學問到這個問題,據說尋覓了好久:
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;
}
問題二尚無頭緒,借寶地問一下各位前輩有沒有知道解決方案的?謝謝啦!