目的:得到局域网中的每台机器IP
方法:DWORD dwRet = GetAdaptersInfo((PIP_ADAPTER_INFO)&tempChar, &uListSize);
问题: 现在得到的是和连接网关的外网的IP,而不是内部的列表
如何能得到内网的IP列表??
方法:DWORD dwRet = GetAdaptersInfo((PIP_ADAPTER_INFO)&tempChar, &uListSize);
问题: 现在得到的是和连接网关的外网的IP,而不是内部的列表
如何能得到内网的IP列表??
解决方案 »
- MFC串口通讯发送摄像头数据应该怎样进行接受与处理
- WMI 通过WIN32_PROCESSOR 的LOADPERCENTAGE 获取的CPU使用率大于100%
- 函数重载的问题 cwnd Cview
- 怎么向别的程序的标题添加按钮?
- 初级问题:WTL中如何根据HDC来划各种类型的线呢?
- 切割后的视图中如何进行视图切换
- std::string转为BSTR *pVal=_com_util::ConvertStringToBSTR(a.c_str());为什么会不行?
- 关于P2P的问题
- 关于单文档\多视
- socket并发服务器
- 有什么办法能够枚举系统托盘区图标和相关进程吗?
- 请教一个VC编程问题,对于一个对话框中的多个子窗口,通过<Tab>键可以使各子窗口获得输入焦点,但如何可以查知或重设子窗口得到焦点的顺序..
寒!这个太慢了
我就是读arp表得出的外网的IP,而不是内网的
to huangxiaoke2000(小小)
如何用arp广播?
再用Gethostname获得主机名
再用Gethostbyname得到相关数据,可以从中得到IP地址。用这些东西要先调用WSAStartup函数, 枚举完了用WnetCloseEnum结束,最后调用WSAClearup结束调用Winsock.dll
这样能得到局域网中所有机器的ip吗?
{
GetDlgItem(IDOK)->EnableWindow(FALSE); CStringArray list;
EnumHosts(list); CListBox *pList = (CListBox *)GetDlgItem(IDC_LIST);
pList->ResetContent(); for(int i=0; i<list.GetSize(); i++)
{
pList->AddString(list.GetAt(i));
} GetDlgItem(IDOK)->EnableWindow(TRUE);// CDialog::OnOK();
}
void CListNeighborDlg::EnumHosts(CStringArray &list)
{
list.RemoveAll(); CString strTemp;
struct hostent *host;
struct in_addr *ptr; DWORD dwScope = RESOURCE_CONTEXT;
NETRESOURCE *NetResource = NULL; HANDLE hEnum; WNetOpenEnum(dwScope, NULL, NULL, NULL, &hEnum); WSADATA wsaData;
WSAStartup(MAKEWORD(1,1), &wsaData); if(hEnum)
{
DWORD Count = 0xFFFFFFFF;
DWORD BufferSize = 2048; LPVOID Buffer = new char[2048]; WNetEnumResource(hEnum, &Count, Buffer, &BufferSize); NetResource = (NETRESOURCE *)Buffer; char szHostName[200]; for (unsigned int i=0; i<BufferSize/sizeof(NETRESOURCE); i++, NetResource++)
{
if (NetResource->dwUsage == RESOURCEUSAGE_CONTAINER && NetResource->dwType == RESOURCETYPE_ANY)
{
if (NetResource->lpRemoteName)
{
CString strFullName = NetResource->lpRemoteName; if (0 == strFullName.Left(2).Compare("\\\\"))
strFullName = strFullName.Right(strFullName.GetLength() - 2); gethostname(szHostName, strlen(szHostName)); host = gethostbyname(strFullName); if (host == NULL) continue; ptr = (struct in_addr *)host->h_addr_list[0]; int a = ptr->S_un.S_un_b.s_b1;
int b = ptr->S_un.S_un_b.s_b2;
int c = ptr->S_un.S_un_b.s_b3;
int d = ptr->S_un.S_un_b.s_b4; strTemp.Format("%s --> %d.%d.%d.%d", strFullName, a,b,c,d); list.Add(strTemp); } }
} delete Buffer;
WNetCloseEnum(hEnum);
}
WSACleanup();}
想得到Mac地址用哪一个函数?
多谢!!
在网上查把!