C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Прокса
Konstantine
Отправлено: 07.11.2006, 11:39


Мастер участка

Группа: Модератор
Сообщений: 545



делаю проксу (не профессионально, а чисто по-любительски)
причём перенаправляет она не в инет, а на другую проксу (ну так надо — напрямик нельзя)
всё вроде в норме, но есть фигня в динамическом создании клиент. сокета:
CODE
void __fastcall TProxyService::ServerSocket1ClientConnect(TObject *Sender,
     TCustomWinSocket *Socket)
{
 Logging("ServerSocket1ClientConnect "+IntToStr(ServerSocket1->Socket->ActiveConnections));
 TClientSocket *t=NULL;
 try
  {
   Logging("0");
   t=new TClientSocket(ClientSocket1->Owner);
   Logging("1");
   t->Address="10.3.2.80";
   Logging("2");
   t->Port=8080;
   Logging("3");
   t->Socket->Data=Socket;
   Logging("4");
   t->OnError=ClientSocket1Error;
   Logging("5");
   t->OnRead=ClientSocket1Read;
   Logging("6");
   t->OnDisconnect=ClientSocket1Disconnect;
   Logging("7");
   t->OnConnect=ClientSocket1Connect;
   Logging("8");
   Socket->Data=t;
   Logging("9");
   t->Open();
   Logging("10");
   Sleep(100);
   Logging("11");
   }
  catch(Exception &exception)
   {
    Logging("Exception: "+exception.Message);
    if(t)
      delete t;
    Socket->Close();  
    }
}
Logging — это функция вывода на Memo, потом будет заменена на вывод в файл (там ничего сложного нет).
так вот — 4 соединения делаются отменно, потом — одно из них уходит в Disconnect (отключается нормально), а потом при коннекте новое не создаётся.
в Логе так:
QUOTE

ClientSocket1Disconnect
ServerSocket1ClientDisconnect
ServerSocket1ClientConnect 4
0
Exception: EAccessViolation
ServerSocket1ClientDisconnect

причём на дисконнект не реагирует и всё равно есть поступившие данные wink.gif
Вопросов 2:
- почему вылазит эксепшн?
- как при поступлении коннекта отказать ему?
прилагаю проект...

User Attached Image Скачать файл
proxy.rar_



Вернуться в Вопросы программирования в C++Builder