Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.04;
Скачать: CL | DM;

Вниз

Сервер на TServersocket и несколько клиентов.Многопоточность (+)   Найти похожие ветки 

 
Виноградов Алексей   (2003-10-03 19:14) [0]

Надо сделать так, чтобы при подключении клиента для него создавался новый поток (объект класса TThread) со своей процедурой приема данных от клиента. Мне непонятно, каким образом сделать так, чтобы для каждого клиента была своя процедура приема данных в отдельном потоке. Кто что подскажет ?


 
Polevi ©   (2003-10-03 20:22) [1]

TServerSocket.OnGetThread


 
Виноградов Алексей   (2003-10-03 20:41) [2]

А простейший примерчик кто-нить может предоставить новичку (kovigor@yahoo.com) ?


 
Hazard ©   (2003-10-04 02:16) [3]

Должно помочь

// описание класса-наследника для процесса каждого клиента
type
TMyServerThread = class(TServerClientThread)
procedure ClientExecute; override;
end;

// процедура, описывающая работу с клиентом
procedure TMyServerThread.ClientExecute;
var
MySocket: TWinSocketStream;
dest: TFileStream;
begin
// открываем файл, в который будем записывать полученные данные
dest := TFileStream.Create("received.dat",fmOpenWrite or fmCreate);
// создаем поток для работы с сокетом
// и задаем таймаут 20 сек.
MySocket := TWinSocketStream.Create(ClientSocket, 20000);
// блок защиты от сбоев try..finally
try
// пока соединение не прервано
while (not Terminated) and ClientSocket.Connected do begin
// ждем данных из сокета
if MySocket.WaitForData(2000) then begin
// если из потока MySocket (сокет) в поток dest (файл)
// скопировано 0 байт, то выходим из цикла while
if dest.CopyFrom(MySocket,1024) = 0 then
break;
end;
end;
finally
// закрываем поток сокета
MySocket.Free;
// закрываем сокет-соединение
ClientSocket.Close;
// закрываем файл
dest.Free;
end;
end;

procedure TForm1.ServerSocket1GetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
begin
// в обработчике события OnGetThread
// создаем новый экземпляр класса процесса
SocketThread := TMyServerThread.Create(False,ClientSocket);
end;



Страницы: 1 вся ветка

Текущий архив: 2003.12.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.006 c
6-11642
BlackSun
2003-10-05 18:21
2003.12.04
Отправка письма с маленьких exe-шником


6-11687
snake
2003-10-04 22:44
2003.12.04
Передача данных между TClientSocket и TServerSocket


4-11737
maxi
2003-10-07 08:57
2003.12.04
Как узнать имя пользователя домена по его аккаунту ????


1-11602
greenrul
2003-11-26 03:31
2003.12.04
Проблемы с File of TMyType


8-11635
Darlock
2003-08-06 17:22
2003.12.04
Текст с белой каемочкой