Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как правильно использовать 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 не возбуждаются, забудь про них.


Наверх

Титульная страница Поиск, карта сайта Написать письмо