InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте







Размещение сквозной ссылки

 

Шаг 1 - Проверка соединения


Создание проекта


Необходимо создать проект Win32 и лучше его назвать RAS. А вообще как хотите. Функции по работе с RAS находятся в динамической библиотеке rasapi32.dll и соотвественно в проект необходимо добавить rasapi32.lib. Как это сделать? Добраться до установки библиотек можно с помощь Project Setting - Link - Object library module. Обязательно добавьте во все конфигурации, а не в Debug или Relase дабы не очень удивляться в будушем.

Создаем код


 
	#include "windows.h" 
	#include "ras.h" 
	#include "iostream.h" 
	#include "conio.h"  
	void main() 
	{ RASCONN ras[20]; DWORD dSize,dNumber; ras[0].dwSize = sizeof(RASCONN);
	dSize = sizeof( ras );     
	if( RasEnumConnections( ras, &dSize, &dNumber ) == 0 )    
	{     cout << "Count Ras " << dNumber << endl;        
	for (DWORD x=0; x < dNumber;x++)            
	cout << ras[x].szEntryName << endl;    }    
	getch(); } 

Описание


RAS - Remote Access Service. Позволяет удаленно подключаться к сетям с использованием удаленного соединения (модем). Именно так я попадаю в Интренет. Запускаю удаленный доступ. Он звонит и входит в сеть.

Итак мы обьявили подключение windows.h для того чтобы пользоваться типами переменных Windows например DWORD там описана. Подключили ras.h для доступа к описанию функций. iostream.h просто обьявление потоков для вывода на экран. Мне удобно хотя можно и по другому например stdio.h - printf, но мне так удобнее. Conio.h для функции getch() она задерживает выполнение программы до нажатия клавиши.

Итак первым делом мы обьявляем массив типа RASCONN из 20 элементов. Почему 20. Мне так хочется. Вообще можно сколько угодно. Но на компьютере обычно модем один и соединение одно. Так что больше 2 нужно точно. Почему больше 2? В конце при проверки программы увидите ! Эта структура содержит информацию о соединении. Вот так она описанна.

 
	typedef struct _RASCONN {
      	DWORD     dwSize;
      	HRASCONN  hrasconn;
      	TCHAR
       szEntryName[RAS_MaxEntryName + 1];
   #if (WINVER >= 0x400)
      CHAR      szDeviceType[ RAS_MaxDeviceType + 1 ];
      CHAR      szDeviceName[ RAS_MaxDeviceName + 1 ];
  #endif   } RASCONN ;  

Дальше мы обьявили две переменные. Они нам понадобятся.

Потом в первый элемент структуры в поле dwSize мы поместили размер 1 записи из массива структур, т.е. размер одной структуры. Зачем ? Посмотрите описание структуры, при разных версиях, размер разный. sizeof как раз этот размер и вычислила.

И весь размер массива вычислили. Нужен он дальше.

RasEnumConnections проверяет наличие соединения. Результат у ней как раз не количество соединений, а успешность обрашения у динамической библиотеки. Ведь её может не быть или она может быть испорчена. В эту функцию мы передаем массив ras, указатель на размер массива. И указатель на число куда вернется количество соединений. Почему указатель, потому что это будет использовано для возврата результата. Как иначе, если функция возврашает успешность своего вызова?

Если функция выполнена, то в dNumber будет количество соединений. Если соединения есть то в массив вернеться о них информация. С помощью for мы пробегаемся по массиву и выводим информацию.

А теперь соберите и запустите программу. Если у Вас нет соединения то на экране появиться 0 и будет ждать нажатия клавиши. А теперь запустите соединение. В проверке пароля для входа в систему можете запустить программу. Но покажет вам 1 и имя соединения которое описано в DialUp.

И последнее. Как проверить два соединения с одним модемом. Сделайте соединение с альтернативным именем, чтобы их было два. Запустите с первым именем. После связи. Запустите со вторым. Вот второе и не запустится. Вам сообщат о том, что модем используеться - ошибка 6... В этот момент запустите вашу программу и она покажет два соединения с именами.

Шпаргалка


Подключите обращение к динамической библиотека включив asapi32.lib

Включите описание функций RAS

  #include "ras.h"
Создавайте код.

RasEnumConnections говорит только о том выполнилась она или нет.

Размер структуры RASCONN может выть разный.

[Содержание][Вперед]


Реклама на InfoCity

Яндекс цитирования



Финансы: форекс для тебя








1999-2009 © InfoCity.kiev.ua