Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Hello, World!
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  12:05[Войти] | [Зарегистрироваться]

Обсуждение материала
RasAPI для 'непродвинутых'.
Полный текст материала


Другие публикации автора: Александр Терехов

Цитата или краткий комментарий:

«... Многие из 'непродвинутых' дельфийцев, пытаясь использовать интернет-компоненты, сталкиваются с проблемой 'удаленного соединения' . Собственно подключаться не трудно - чаще всего такие компоненты с помощью системной библиотеки wsock32.dll сами инициализируют подключение к Интернет по 'удаленному соединению'... ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.

Результаты голосования
Оценка содержания

  Содержит полезные и(или) интересные сведения
[1]2890.3%
 
  Ничего особенно нового и интересного
[2]39.7%
 
  Написано неверно (обязательно укажите почему)
[3]00%
 
Всего проголосовали: 31

Оценка стиля изложения

  Все понятно, материал читается легко
[1]2291.7%
 
  Есть неясности в изложении
[2]28.3%
 
  Непонятно написано, трудно читается
[3]00%
 
Всего проголосовали: 24




Смотрите также материалы по темам:
[RAS API] [Подключение к Internet]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 46

15-08-2008 06:14
я имел ввиду код не из статьи, а из исходников
Ясно. Ну на то они и исходники, чтоб в них ошибки были :)
Скорее всего автор просто забыл убрать эти строки.


15-08-2008 05:40

Это просто пример. Вы прочли этот комментарий?

Приношу извинения - я имел ввиду код не из статьи, а из исходников.
Приведу код этой процедуры полностью:


var
  ...
  AllEntries        : TStrings;
begin
AllEntries:=TStringList.Create;
ListBox1.Clear;
Entry[1].dwSize:=SizeOf(TRasEntryName);
BuffSize:=SizeOf(TRasEntryName)*MaxEntries;
Result_:=RasEnumEntries(nil, nil, @Entry[1], BuffSize, Entries);
If (Result_=0) and (Entries>0) then
Begin
  For X:=1 To Entries Do
   Begin
     ListBox1.Items.Add(Entry[x].szEntryName);
     AllEntries.Add(Entry[x].szEntryName);
    End;
   End;
AllEntries.Free;
end;


Как я понял, "работаем со своей переменной" - это заполнение ListBox1.
А для чего заполняется список строк AllEnries? Если оставлено для примера - вопросов больше нет. В противном случае - прошу подсказать. Спасибо!


15-08-2008 01:10
Не могу понять - зачем в процедуре определения существующих подключений заполняется список строк, а потом - без какой-либо обработки - разрушается?

Это просто пример. Вы прочли этот комментарий?

.....здесь мы работает со своей переменной, например,
помещаем сведения об "удаленных соединениях" в ListBox......



15-08-2008 00:56
Не могу понять - зачем в процедуре определения существующих подключений заполняется список строк, а потом - без какой-либо обработки - разрушается?


var
  ...
  AllEntries        : TStrings;
begin
AllEntries:=TStringList.Create;
  ...
If (Result_=0) and (Entries>0) then Begin
  For X:=1 To Entries Do Begin    
     AllEntries.Add(Entry[x].szEntryName);
    End;
   End;

AllEntries.Free;




03-04-2008 12:48
Как установить - разорвать соединение DialUp
http://articles.org.ru/cfaq/index.php?qid=420&catid=31
Подходит!


31-01-2008 07:42
Подскажите как можно разом разорвать все соединения, без предворительного установления их коннекта, т.е. без hRas?!


15-10-2007 06:40
прошу прощения за предыдущий вопрос, разобрался сам - все работает.
моя ошибка - не задавал размер записи (dwSize) перед вызовом RasGetEntryDialParams...
Сообщение не подписано


15-10-2007 03:49
Доброго времени суток!
Подскажите пожалуйста можно ли использовать имя и пароль сохраненные в соединении?
Если да, то как?

(Win 2003 server, соединение вызывается пользователем с ограниченными правами, но в нем указано сохранять имя пользователя и пароль для любого пользователя и при интерактивном запуске соединение работает, но мне нужно в пакетном режиме, а rasdial.exe работает только с указанием пароля в открытом виде, что не есть хорошо...)
Сообщение не подписано


13-03-2007 02:49
Stdcall - это способ передачи данных через стек CPU (справа - налево). Зарезервированное слово stdcall необходимо применять при обращении к находящимся в DLL (Dynamic Link Library - динамически подключаемая библиотека) процедурам и функциям, написанных на другом языке программирования - это из Help'а. Я однажды забыл указать этот параметр при обращении к DLL написанной на Pascal и в результате "подвесил" компьютер. Поэтому, всегда при обращении к библиотекам указывайте - stdcall.

Не совсем точно
 slow


08-11-2006 02:52
Ссылка исправлена, можно качать. Извините за задержку - праздники, выходные.


05-11-2006 04:46
Пожалуйста, почините ссылку!!!


04-11-2006 13:30
Нет, все-таки ссылка не работает...


03-11-2006 17:10
Ссылка исправлена


03-11-2006 13:07
не закачиваетца rasapi.zip Если не трудно, скиньте на мыло: venom_@bigmir.net Очень надо...


08-12-2005 07:31
День добрый!!! Прочитал статью о RASAPI. Всё это очень интересно, но моя проблема так и не решилась. А проблема заключается в следующем: не выводится окно терминала после дозвона, для авторизации у провайдера. Я знаю, что через RASAPI это можно провернуть, но как не знаю!? Господа, может, подскажите? Заранее благодарен!!!


21-11-2005 05:22
Полезная статья. Интересно, по каким причинам RASAPI не включены в стандартную поставку Delphi? rasapi32 это стандартная библиотека, или она можеть и не существовать на компьютере?
 Cep


27-09-2005 13:04
Статья – супер! Очень хотелось бы увидеть продолжение.
Особенно интересует, при помощи каких RasAPI-функций (наверняка есть такие) можно решить следующие моменты:
1.Из списка всех соединений, полученного от функции RasEnumEntries выделить установленное по умолчанию
2.Определить текущее состояние дозвона (типа «набор номера ххххххх...», «проверка имени и пароля...» и т.п.)
 Rowi


03-05-2005 00:35
Ок, каюсь, не заметил. Но есть, блин, и другая проблема. Я реализую Почему-то при дозвоне через CDMA-телефон начиная с третьего перезвона обламывается RasHangUp, выполняющийся в callback при условии "ошибка<>0 и состояние<>RASCS_Disconnect" (я о своем собственном прожекте говорю). Возвращается та же фигня - соединение уже разорвано.
Сообщение не подписано


02-05-2005 15:49
Я жму на "Dial" в предлагаемом проекте, потом отключаю и снова включаю модем. И что же имею? При любой попытке перезвонить - Connection was terminated.
Я вообще-то пример не смотрел, но прочитал обсуждение и увидел нечто интересное (см. сообщение от 15-09-2004 16:39). Это случайно не ответ на Ваш вопрос?
 Geo


02-05-2005 12:06
Ну и ну! Похоже, автор не проверял обработку ошибок дозвона? Я жму на "Dial" в предлагаемом проекте, потом отключаю и снова включаю модем. И что же имею? При любой попытке перезвонить - Connection was terminated. Я-то думал, смогу разобраться, что делаю не так, почитав творчество других программеров. Щазз.


20-02-2005 05:56
Статья интересная и полезная. Но у меня проблема.
Я тут хочу написать свою "звонилку", а как узнать номера телефонов соединения? Пробую DialParams.szPhoneNumber (из примера), а все его элементы равны #0!!!
Что мне делать???????????????


11-01-2005 21:56
Все нашел! И даже интереснее
Как установить - разорвать соединение DialUp
http://articles.org.ru/cfaq/index.php?qid=420&catid=31


03-01-2005 17:22
Все бы ничего и хорошо даже, но если соединение имеет несколько телефонов для дозвона, то непонятно как выбрать нужный.
Т.е. хотелось бы выбирать телефон из списка.
Куды бечь ? :)


15-09-2004 16:39
Цитирую:
"Я как раз "непродвинутый". Запускаю пример под W2000, жму Баттон1,
Баттон2... соединилося, жму Баттон3, разъединилося, жму Баттон2 снова,
а оно говорит "Уже разъядинилося"(Подключение было прервано), хватит, говорит! Покопался в тексте, а там такого нет!!! Покопался еще. Есть, оказывается, ERROR_NO_CONNECTION (668) Похоже оно, а чего не понятно,-
"непродвинутый". Может подскажете."

У меня то же самое. Это лечится так:
hRas:=0;
If R=0 Then
Begin
  Application.ProcessMessages;
  R:=RasDial(Nil, Nil, DialParams, 0, @RasCallback, hRAS);



06-03-2004 18:10
здорава


07-12-2003 12:54
А как поолучить траффик в win98 там поддержка ras хилая.
Сообщение не подписано


17-11-2003 15:05
Спасибо за помощь, извините что отрываю от дел!


17-11-2003 12:41
2 Александр

Чтож вы такой беспомощный, тезка!?
Я могу поверить, что у вас на машине нет MSDN, но хоть интернет-то есть?! Что мешало зайти на www.msdn.com и поискать rasenumconnections?

Привожу текст статьи из MSDN по данному вопросу. Только не просите меня перевести текст с английского на русский и пример с C на Delphi, у меня нет на это времени.

Terminating a Connection

When a RAS application starts a connection operation, the RasDial function receives a RASCONN connection handle to identify the connection. If the returned handle is not NULL, the client must eventually call the RasHangUp function to end the connection. If an error occurs during the connection operation, the client must call the RasHangUp function even though the connection was never established.

A client application might require a connection to end even though it does not have the handle returned by RasDial. For example, the application that called RasDial might have exited when the connection was successfully established. In this case, the disconnecting application can use RasEnumConnections to get all the current connections. For each connection, RasEnumConnections returns a RASCONN structure containing the RASCONN connection handle and the phone-book entry name or phone number specified when the connection operation was started. This data can be used to display a list of connections from which a user can select the connection to end.

If the application exits after calling RasHangUp, there may not be enough time for the modem to reset. To provide the modem time to reset, pause for a few seconds while the application exits.

Before an application terminates one or more connections, it is useful to enumerate the existing connections and hang up. The RasEnumConnections retrieves the current connections.

To terminate a connection

Call RasEnumConnections to find all RAS connections.
Call RasHangUp to terminate the connection.
The following code example shows how to terminate a connection.

DWORD CloseRasConnections ()
{
  int index;                 // An integer index
  TCHAR szError[100];        // Buffer for error codes
  DWORD dwError,             // Error code from a function call
        dwRasConnSize,       // Size of RasConn in bytes
        dwNumConnections;    // Number of connections found
  RASCONN RasConn[20];       // Buffer for connection state data
                             // Assume the maximum number of entries is
                             // 20.

  // Assume no more than 20 connections.
  RasConn[0].dwSize = sizeof (RASCONN);
  dwRasConnSize = 20 * sizeof (RASCONN);

  // Find all connections.
  if (dwError = RasEnumConnections (RasConn, &dwRasConnSize,
                                    &dwNumConnections))
  {
    wsprintf (szError, TEXT("RasEnumConnections Error: %ld"), dwError);
    return dwError;
  }

  // If there are no connections, return zero.
  if (!dwNumConnections)
  {
    wsprintf (szError, TEXT("No open RAS connections"));
    return 0;
  }

  // Terminate all of the remote access connections.
  for (index = 0; index < (int)dwNumConnections; ++index)
  {
    if (dwError = RasHangUp (RasConn[index].hrasconn))
    {
      wsprintf (szError, TEXT("RasHangUp Error: %ld"), dwError);
      return dwError;
    }
  }

  return 0;
}



16-11-2003 14:33
Напишите, пожалуйста, пример как хэндл получить через RasEnumConnections.


16-11-2003 12:35
То есть его можно получить через RasEnumConnections?


12-11-2003 18:10
Выдержка из MSDN для тех, кто боится туда заглянуть:

DWORD RasHangUp(
  HRASCONN
hrasconn  // handle to the RAS connection to hang up
);



Parameters

hrasconn
[in] Specifies the remote access connection to terminate. This is a handle returned from a previous call to RasDial or RasEnumConnections.

Как видно, не только после RasDial можно получить хэндл соединения.


12-11-2003 16:41
Все хорошо, за исключением одного: какой параметр должен быть RasHangUp в , если соединение создавалось не моей программой (а Windows)???


05-10-2003 20:29
Я тоже нашел :), увидел ссылку.


05-10-2003 20:26
Нигде не могу найти RasUnit.pas Кому нетрудно, отправьте мне на емейл.
Зарание спасибо.


12-08-2003 15:16
ой, извниняюсь, нашел :), увидел ссылку, торможу что-то сегодня


12-08-2003 13:05
ребят, пожалста, дайте ссылку на модуль RasUnit.pas
не могу найти его в инете, или, если не сложно скиньте на мыло, буду очень благодарен


08-04-2003 12:23
Да статья конечно интересная, но к сожалению там нет того что мне нужно.....:(( Там не написано как узнать все поля ко всем соединениям, например узнать полный адресс(C:\win\mtu.scp) к скриптам.
Это очень досадно. Я бы была очень благодарна если бы ты мне помог.


22-02-2003 22:57
Я как раз "непродвинутый". Запускаю пример под W2000, жму Баттон1,
Баттон2... соединилося, жму Баттон3, разъединилося, жму Баттон2 снова,
а оно говорит "Уже разъядинилося"(Подключение было прервано), хватит, говорит! Покопался в тексте, а там такого нет!!! Покопался еще. Есть, оказывается, ERROR_NO_CONNECTION (668) Похоже оно, а чего не понятно,-
"непродвинутый". Может подскажете.
За статью спасибо, статья полезная.


26-11-2002 20:44
Полезная статья, очень помогла понять как работать с Ras


23-10-2002 18:20
мне понравилось, что просто о сложном.


02-10-2002 08:56
Вопрос для "Hello word".
А каким образом можно подсчитывать
траффик входящий/выходящий?


20-09-2002 12:28
Правильно, если модем включен то порт автоматически открывается при загрузке винды. Нужно просто отключить устройство через диспетчер устройств или 'подать питание' на модем после загрузки оси.


23-08-2002 10:55
Все хорошо, но не работает под NT4+RAS RasDial любезно сообщает что невозможно открыть порт.


24-01-2001 13:41
Иногда нужно, т.к. при использовании готовых модулей не знаешь, где глюки ловить, у себя, или на авторов 'миллиона готовых модулей', которых, между прочим, вовсе и не миллион, а десятка полтора-два(максимум). Да и из них нормально работает 2%. Утверждаю, т.к. пробовал около десятка и ни один (!) без глюков не работает...


19-01-2001 15:17
Да кому это нужно? Ведь готовых модулей миллион! И не нужно копаться в API


12-01-2001 11:23
Все, в принципе, ясно и понятно, но по иронии судьбы я начал изучать этот вопрос где-то неделю назад и продвинулся уже гораздо дальше (правда, и задача несколько покруче - надо работать с режимом Multilink). Так что если бы статья появилась несколько раньше, то, возможно, она помогла бы сэкономить половину рабочего дня, убитую на освоение азов RASAPI. Кстати, до того, как решиться на изучение RASAPI, я потратил несколько дней на работу с библиотекой MagRAS (взята на torry.ru). Так вот, я не рекомендовал бы с ней связываться из-за ее черезмерной перегруженности и наличия достаточно большого количества багов, которые проявляются даже в родной демо-программе, полному отсутствию документации и малоинформативному Help"у. По поводу модуля rasunit.dcu, приложенного к программе - неплохо бы исходник его тоже иметь (у меня есть три различных варианта), т.к.
если вы пишите под Win95,98, то все ОК, но под NT возникнут проблемы, связанные с директивами типа {IFDEF WINVER41}, которые используются для описания специфических особенностей структур RASAPI, доступных только под NT/2000. Кстати, те же проблемы возникают и под W2K (под ним я работаю в настоящий момент) именно из-за номера версии системы.
Еще хочу порекомендовать всем, кто хочет начать изучение RAS, посетить msdn.microsoft.com, там очень неплохо все описано (правда, на английском и почти все это есть в Win32 Programmer"s Reference), но для тех, кто работает под Win2K, это единственный источник информации по дополниельным возможностям RAS в этой системе.


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
"Мы с тобой одной крови — ты и я!". Чьи это заветные слова?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.

Оценка содержания
 
Содержит полезные и(или) интересные сведения
 
Ничего особенно нового и интересного
 
Написано неверно (обязательно укажите почему)


Оценка стиля изложения
 
Все понятно, материал читается легко
 
Есть неясности в изложении
 
Непонятно написано, трудно читается

Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

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