Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C++Builder2007(триал)+Indy10+SSL работают??? Проблема с созданием SSL клиент-сервера 
:(
    Опции темы
mMMMm
  Дата 9.8.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.8.2007

Репутация: нет
Всего: нет



Возник трабл при создании клиент/сервера с поддержкой SSL. Точнее, именно сервера.
В нете накопал из работоспособного только это Indy10SSLExample.zip

Для вышеназванного примера написал (переписал с делфи аналог) рабочий клиент на С.
Сервер подобным образом переписанный отказался работать. При попытке подключения к серверу "Мой" клиент выдаёт Error connecting with SSL. А "мой" сервер Socket Error 10038.

С отключенным SSL Мои клиент и сервер работают на ура.

При "переводе" сервера на С, возникла трудность с двумя строками:
Код

procedure TForm1.IdTCPServerConnect(AContext: TIdContext);
begin
  { THESE TWO LINES ARE CRITICAL TO MAKING THE IdTCPSERVER WORK WITH SSL! }
    if (AContext.Connection.IOHandler is TIdSSLIOHandlerSocketBase) then
    TIdSSLIOHandlerSocketBase(AContext.Connection.IOHandler).PassThrough:= false;
 
end; { ID TCP SERVER CONNECT }
 

Сервер на делфи, действительно отказывается работать если удалить подобное определение.
В документации ничего вразумительного по поводу этих строк не нашёл.
Удалось перевести на С так:
Код

...
TIdSSLIOHandlerSocketOpenSSL(AContext->Connection->IOHandler).PassThrough= false;

Условие в делфи выполняется постоянно, я его опустил.

Полные исходники не привожу, они более чем очевидны из примера. SSL библиотеки брал тамже, где и пример.

Помогите разобраться с конкретным примером, или покажите рабочий пример на С++ клиент/сервера с поддержкой SSL.

P.S. Гуглить не послыть, я там уже не первый день копаю.
PM MAIL   Вверх
jonie
Дата 9.8.2007, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



Цитата

 При попытке подключения к серверу "Мой" клиент выдаёт Error connecting with SSL.
GetLastError() что выдает ? Или как там у билдера)... это маловразумительно

Цитата

Помогите разобраться с конкретным примером, или покажите рабочий пример на С++ клиент/сервера с поддержкой SSL.
OpenSSL ?

Клиент на делфи рабочий ? 
[off]
Я когда-то юзал winInetApi с целью дунуть файлик по SSL(TLS) с https.... обломил меня IE  (сертификат просроченный был и неподписанный)... пришлось выставить ему настройки "забивать"... может и в там че-нить подобное...
[/off]

ЗЫ. строки на делфи - это RTTI - сравнение в run-time типов данных... в С++ есть аналог... вроде как typeid ?

Это сообщение отредактировал(а) jonie - 9.8.2007, 23:58


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
mMMMm
Дата 10.8.2007, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.8.2007

Репутация: нет
Всего: нет



Код

  try{
    IdTCPClient->Connect();
    Edit1->SetFocus();
  }
  catch(...)
    {ShowMessage(GetLastError());Button->Enabled= true;}

Выдаёт 0, соответственно catch срабатывает.

Клиент и севре на делфи друг к другу цепляются и работают, + мой клиент цепляется и работает с делфийским сервером гуд.

Добавил нечто подобное:
Код

if (typeid(AContext->Connection->IOHandler)== typeid (TIdSSLIOHandlerSocketOpenSSL))
    {
    Memo1->Lines->Add("typeid");
    TIdSSLIOHandlerSocketOpenSSL(AContext->Connection->IOHandler).PassThrough= false;
    }

В условие не заходит и при typeid (TIdSSLIOHandlerSocketOpenSSL) и при typeid (TIdSSLIOHandlerSocketBase)

Добавлю что мой сервер ведёт себя довольно необычно. При запуске без ИДЕ выдаёт все "норм" ошибки, и из под ИДЕ почему-то пропускает ошибку при чтении, и начинает забивать окно лога повторами сообщений (типа читает пустые строки и выводит в лог), а также сыплет повторами Socket Error 10038...
PM MAIL   Вверх
mMMMm
Дата 10.8.2007, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.8.2007

Репутация: нет
Всего: нет



Ради эксперимента зашёл телнетом на сервер зацепился... Эффект почти как в ИДЕ Сервер "думает", что ему передают пустые строки, выводит их в лог, и передёт обратно немного модифицировав, телнет их принимает!!! И тоже выводит... Разумеется ни о каком рабочем SSL думать не приходится...

P.S. Телнет нормально подключается к северу если отключить SSL. и не цепляется вовсе к дельфийскому серверу(SSL).
PM MAIL   Вверх
donmutti
Дата 4.2.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 25.2.2008

Репутация: нет
Всего: нет



...

Это сообщение отредактировал(а) donmutti - 4.2.2009, 13:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.