18,356
社区成员
发帖
与我相关
我的任务
分享
InitWinSock();
struct hostent *host;
DWORD dwScope = RESOURCE_CONTEXT;
NETRESOURCE *netResource = NULL;
HANDLE hEnum;
WNetOpenEnum(dwScope, NULL, NULL, NULL, &hEnum);
if (hEnum)
{
DWORD count = 0xFFFFFFFF;
DWORD bufferSize = 2048;
LPVOID buffer = new _TCHAR[2048];
WNetEnumResource(hEnum, &count, buffer, &bufferSize);
netResource = (NETRESOURCE*)buffer;
char hostName[200];
hostName[0] = '\0';
gethostname(hostName, sizeof(hostName));
printf("Host Name:%s\n", hostName);
for(UINT i = 0; i < bufferSize / sizeof(NETRESOURCE); i++, netResource++)
{
if(netResource->dwUsage == RESOURCEUSAGE_CONTAINER && netResource->dwType == RESOURCETYPE_ANY)
{
if(netResource->lpRemoteName)
{
LPTSTR fullName = netResource->lpRemoteName;
if(fullName[0] == '\\' && fullName[1] == '\\')
{
fullName = fullName + 2;
}
host = gethostbyname(fullName);
if(host == NULL)
continue;
printf("Client:\t%s\n\t%s\n", fullName, inet_ntoa(*(struct in_addr *)host->h_addr_list[0]));
}
}
}
delete buffer;
WNetCloseEnum( hEnum );
}
CleanupWinSock();