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

 Здравствуйте, гость ( Вход | Регистрация )   Скачать форум | Поиск по Форуму | Участники | Помощь
 Поиск по:   сайтy   
   архиву форума   
  ОтветитьНовая темаНовый опрос
ServerSocket и
« предыдущая тема | следующая тема » Подписаться на тему | Отправить тему на E-mail | Распечатать тему
veb
Отправлено: 09.03.2007, 17:36 Цитировать


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


Группа: Участник
Сообщений: 5
Пользователь № 4771
Регистрация: 09.03.07



Требуется написать ТСР сервер с отдельными потоками для каждого клиента или для каждого соединения. Клиенты (до 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();
}
//---------------------------------------------------------------------------
 
Послать сообщение E-mail адрес  Top
0 ответов с: 09.03.2007, 17:36 Подписаться на тему | Отправить тему на E-mail | Распечатать тему

Back to Вопросы программирования в C++Builder
ОтветитьНовая темаНовый опрос