Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Получение списка сетевых подключений


Автор: Imir 27.10.2009, 14:21
Доброго всем времени суток.

Проблема в следующем:
В Windows XP необходимо получить список всех "входящих подключений" (см рис. блок №1) если компьютер выступает в роли "ведомого". Это необходимо, чтобы можно было управлять этими подключениями, а вернее при необходимости разорвать (отключить).
К примеру используя функцию RasEnumEntries получается получить только список "прямых" подключений (см рис. блок №2). 

user posted image

Автор: Imir 28.10.2009, 12:48
Задачу решил следующим образом:
Код

#include <windows.h>
#include <Mprapi.h>
#pragma comment(lib,"Mprapi.lib")

int _tmain(int argc, _TCHAR* argv[])
{
  MPR_SERVER_HANDLE phMprServer;
  if( MprAdminServerConnect(NULL,&phMprServer) != NO_ERROR) return 0;

  PRAS_CONNECTION_0 buf = NULL;
  DWORD EntriesRead,TotalEntries,Resume;
  EntriesRead=TotalEntries=Resume=0;
  if( MprAdminConnectionEnum(phMprServer,0,(BYTE**)&buf,-1,&EntriesRead,&TotalEntries,&Resume) != NO_ERROR ) return 0; //получаем список соединений "Входящие" (см рис блок№1)
  
  for( DWORD i=0; i < EntriesRead; i++) {
    PRAS_PORT_0 port = NULL;
    DWORD EntriesRead_port,TotalEntries_port,Resume_port;
    EntriesRead_port=TotalEntries_port=Resume_port=0;
    if( MprAdminPortEnum(phMprServer,0,buf[i].hConnection,(BYTE**)&port,-1,&EntriesRead_port,&TotalEntries_port,&Resume_port) != NO_ERROR ) continue;
    for( DWORD j=0;j<EntriesRead_port;j++) {
      if( MprAdminPortDisconnect(phMprServer,port[j].hPort) != NO_ERROR ) continue; //закрываем соединение
    }
    if( port != NULL) MprAdminBufferFree(port);
  }
  if( buf != NULL) MprAdminBufferFree(buf);
  return 0;
}


всем спасибо. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)