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

 
ServerSocket и
veb
Отправлено: 09.03.2007, 17:36


Ученик-кочегар

Группа: Участник
Сообщений: 5



Требуется написать ТСР сервер с отдельными потоками для каждого клиента или для каждого соединения. Клиенты (до 16-ти) посылают пакеты по 23 байта 180 раз в секунду. Использую ServerSocket, получаю соединение, адрес клиента, но до чтения дойти не могу: не попадаю в SocketEvent для чтения.

Помогите, кто чем может.

Основной модуль
CODE

#include <vcl.h>
#include "Main.h"
#include "MonitorThread.h"
//---------------------------------------------------------------------------
__fastcall TfmMain::TfmMain(TComponent* Owner)
       : TForm(Owner)
{
 ServerSocket->Open();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ServerSocketGetThread(TObject *Sender,
     TServerClientWinSocket *ClientSocket,
     TServerClientThread *&SocketThread)
{
    SocketThread = (TServerClientThread*)new TMonitorThread(false,ClientSocket);
}
//---------------------------------------------------------------------------


Thread объект
CODE

#include "MonitorThread.h"
//---------------------------------------------------------------------------
__fastcall TMonitorThread::TMonitorThread(bool CreateSuspended, TServerClientWinSocket* ASocket)
     : TServerClientThread(CreateSuspended,ASocket)
{
 ASocket->OnSocketEvent = SocketEvent;
 FreeOnTerminate = true;
}
//---------------------------------------------------------------------------
void __fastcall TMonitorThread::Execute(void)
{
  int len;
 if(ClientSocket != NULL)
   {
    len = ClientSocket->ReceiveLength();
   }
}
//---------------------------------------------------------------------------
void __fastcall TMonitorThread::SocketEvent(TObject* Sender, TCustomWinSocket* Socket, TSocketEvent SocketEvent)
{
 int len;
 if(SocketEvent == seRead)
   len = Socket->ReceiveLength();
}
//---------------------------------------------------------------------------

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