![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно использовать TServerSocket?
alles © (2007-09-25 16:41:00)Добрый день.
Задачя состоит в том что при каждом коннекте клиента создавался новый TServerClientThread где будем читать только данные отправленные этого клиента а не другого. Эти данные будут обрабатыватся и потом послать ему (клиенту) обратно ответ.
Как правильно использовать компонент TServerSocket в этом случай.Какое значение в полеServerTypeу ServerSocket-a должна быть? А у клиента в полеClientType?
Спасибо
Сергей М. (2007-09-26 08:46:00) [1]
> эти события не автоматически возбуждаются, если
эти события автоматически невозбуждаются, если
Сергей М. (2007-09-26 08:32:00) [2]
> События OnClientRead, OnClientWrite в режиме stThreadBlocking
> не возбуждаются, забудь про них
Точнее было бы сказать так - эти события не автоматически возбуждаются, если перекрыть ClientExecute.
В противном случае эти события возбуждаются в контексте основного потока.
Сергей М. (2007-09-26 08:18:00) [3]
> чем TServersocket.Socket.ActiveConnections[i] не устраивает?
А он-то здесь с какого боку ?
Dmitro (2007-09-26 00:27:00) [4]А чем TServersocket.Socket.ActiveConnections[i] не устраивает?
Сергей М. (2007-09-25 17:03:00) [5]
> а надо использовать в этом потоке TWinSocketStream (нашел
> в инете)
Использовать этот класс можно , но необязательно.
> или можно сюда использовать пример из делфи
Плохой пример. Использовать его как альтернативу настоятельно нерекомендую.
alles (2007-09-25 16:55:00) [6]Сергей а надо использовать в этом потоке
TWinSocketStream(нашел в инете) или можно сюда использовать пример из делфи:
.......
while ClientSocket.ReceiveLength > 0 do
Buffer:=AllocMem(ClientSocket.ReceiveLength);
.......
Сергей М. (2007-09-25 16:50:00) [7]
> Какое значение в поле ServerType у ServerSocket-a должна
> быть?
stThreadBlocking
> А у клиента в поле ClientType?
По барабану какое. На работу сервера это никак не повлияет.
> Как правильно использовать компонент TServerSocket в этом
> случай
Обрабатывай событе OnGetThread, где создавай собственный транспортный поток - наследник TServerClientThread с перекрытым методом ClientExecute, в теле которого работай с удаленным клиентом посредством объекта, представленного св-вом TServerClientThread.ClientSocket.
Традиционный шаблон обработчика ClientExecute:
while not Terminated and ClientSocket.Connected do begin
..
end;
События OnClientRead, OnClientWrite в режиме stThreadBlocking не возбуждаются, забудь про них.