На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > ip-адреса машин в локальной сети , получить имена и ip-адреса удаленных машин в локальной сети
      Вот.
      Надо как-то получить ip всех машин в локалке. Может кто-нить знает как это сделать на С++?
      Заранее благодарен.

      ОС: WinXP
      Компилятор: Visual Studio 2005
          Цитата qwerty @
          Надо как-то получить ip всех машин в локалке. Может кто-нить знает как это сделать на С++?
          Заранее благодарен.

          Через winsock, или boost.
            ExpandedWrap disabled
              void CCompNetDlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
              {
                  LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
                  // TODO: Add your control notification handler code here
                  *pResult = 0;
              }
              HTREEITEM CCompNetDlg::InsertTreeItem(HTREEITEM hParent, NETRESOURCE *const pNetResource,CString sText, int iImage)
              {
                  TVINSERTSTRUCT ItemStruct;
                  ItemStruct.hParent          = hParent;
                  ItemStruct.hInsertAfter     = TVI_LAST;
                  ItemStruct.itemex.mask      = TVIF_IMAGE|TVIF_TEXT|TVIF_CHILDREN|TVIF_PARAM;
                  ItemStruct.itemex.pszText   = sText.GetBuffer(sText.GetLength());
                  ItemStruct.itemex.iImage    = iImage;
                  ItemStruct.itemex.cChildren = 1;
                  ItemStruct.itemex.lParam    = (LPARAM)pNetResource;
                  sText.ReleaseBuffer();
                  return TreeComp.InsertItem(&ItemStruct);
              }
              void CCompNetDlg::OnTvnItemexpandingTree1(NMHDR *pNMHDR, LRESULT *pResult)
              {
                  LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
                  // TODO: Add your control notification handler code here
                  CWaitCursor CursorWaiting;
                  ASSERT (pNMTreeView);
                  ASSERT (pResult);
                  if(pNMTreeView->action == 2)
                  {
                      //CString sPath = GetItemPath(pNMTreeView->itemNew.hItem);
                      if(!TreeComp.GetChildItem(pNMTreeView->itemNew.hItem))
                      {
                          EnumNetwork(pNMTreeView->itemNew.hItem);
                          if(TreeComp.GetSelectedItem() != pNMTreeView->itemNew.hItem)
                              TreeComp.SelectItem(pNMTreeView->itemNew.hItem);
                      }
                  }
                  *pResult = 0;
              }
              bool CCompNetDlg::EnumNetwork(HTREEITEM hParent)
              {
                  bool bGotChildren = false;
                  NETRESOURCE *const pNetResource = (NETRESOURCE*)(TreeComp.GetItemData(hParent));
                  DWORD dwResult;
                  HANDLE hEnum;
                  DWORD cbBuffer = 16384;
                  DWORD cEntries = 0xFFFFFFFF;
                  DWORD i;
                  LPNETRESOURCE lpnrDrv;
                  dwResult = WNetOpenEnum(pNetResource? RESOURCE_GLOBALNET:RESOURCE_CONTEXT,
                                          RESOURCETYPE_ANY,
                                          0,
                                          pNetResource?pNetResource:NULL,
                                          &hEnum);
                  if(dwResult != NO_ERROR)
                      return false;
                  do
                  {
                      lpnrDrv = (LPNETRESOURCE)GlobalAlloc(GPTR,cbBuffer);
                      dwResult = WNetEnumResource(hEnum,&cEntries,lpnrDrv,&cbBuffer);
                      if(dwResult == NO_ERROR)
                      {
                          for(i = 0; i<cEntries;i++)
                          {
                              CString sNameRemote = lpnrDrv[i].lpRemoteName;
                              int nType = 9;
                              if(sNameRemote.IsEmpty())
                              {
                                  sNameRemote = lpnrDrv[i].lpComment;
                                  nType = 8;
                              }
                              if(sNameRemote.GetLength()>0&&sNameRemote[0] == _T('\\'))
                                  sNameRemote = sNameRemote.Mid(1);
                              if(sNameRemote.GetLength()>0&&sNameRemote[0] == _T('\\'))
                                  sNameRemote = sNameRemote.Mid(1);
                              if(lpnrDrv[i].dwDisplayType = RESOURCEDISPLAYTYPE_SHARE)
                              {
                                  int nPos = sNameRemote.Find(_T('\\'));
                                  if(nPos>=0)
                                      sNameRemote = sNameRemote.Mid(nPos+1);
                                  InsertTreeItem(hParent,NULL,sNameRemote,DRIVE_NO_ROOT_DIR);
                              }
                              else
                              {
                                  NETRESOURCE* pResource = new NETRESOURCE;
                                  ASSERT (pResource);
                                  *pResource = lpnrDrv[i];
                                  //pResource->lpLocalName = MakeDynamic(pResource->lpLocalName);
                                  InsertTreeItem(hParent, pResource,sNameRemote,pResource->dwDisplayType+7);
                              }
                              bGotChildren = true;
                          }
                      }
                      GlobalFree((HGLOBAL)lpnrDrv);
                      if(dwResult!=ERROR_NO_MORE_ITEMS)
                          break;
                  }
                  while (dwResult != ERROR_NO_MORE_ITEMS);
                  WNetCloseEnum(hEnum);
                  return bGotChildren;
               
                  return 0;
              }

            Работает в МФЦнадо добавить галочку сокетс при создании и Tree control на форму. Выводит имена всех компютеров сети. Будут вопросы пиши.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0202 ]   [ 16 queries used ]   [ Generated: 27.04.24, 17:44 GMT ]