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

Вниз

процедура OnAccept в компоненте TTcpServer   Найти похожие ветки 

 
SergeyDon   (2005-07-27 12:14) [0]

{TTcpServer.BlockMode=bmThreadBlocking;}

procedure T___.TcpServer1Accept(sender: TObject;
 ClientSocket: TCustomIpClient);
begin
\\идентифицировал клиента
str:=ClientSocket.LookupHostName(ClientSocket.RemoteHost) +
  " (" + ClientSocket.RemoteHost + ")";
Logs.Add("Incoming connection: "+str);
\\получил данные
ClientSocket.ReceiveBuf(r_bufsize,1);
ClientSocket.ReceiveBuf(r_buf[0],r_bufsize);
... \\создал поток для обработке данных
{клиент связь не рвет}
end;

вопросы:
1. Если клиент посылает ещё пакет данных почему OnAccept не вызывается?
2. Где и как отправить ответ клиенту после обработки данных?
3. При подключении клиента TTcpServer создаёт отдельный поток для обработки OnAccept?
4. Как использовать OnGetThread и OnListening?


 
kblc ©   (2005-07-27 12:23) [1]

а ты Ctrl+F1 не нажимал?


 
kblc ©   (2005-07-27 12:29) [2]

Конференция называеться WinAPI .. так ты и пеши на АПИ... тогда и помогут.. ;)


 
Digitman ©   (2005-07-27 12:37) [3]


> 1. Если клиент посылает ещё пакет данных почему OnAccept
> не вызывается?


с какого перепугу OnAccept должен вызываться при этом ?

данное событие лишь фиксирует факт успешное акцептирование клиентского запроса на соединение с сервером .. соединение же происходит однократно !

см. события OnRead like


 
SergeyDon   (2005-07-27 14:54) [4]

to Digitman: если можно для тех кто в танке

в событии OnAccept я получаю ClientSocket:TCustomIpClient по которому могу идентифицировать клиента.
а в событии T___.TcpServer1GetThread имею указатель на ClientSocketThread: TClientSocketThread
как с ним работать что то по Help`у не очень понятно куда и когда обращаться для вычитки/отправки данных?
события OnRead наверное имеллось в виду OnReceive - через инспектор недоступно, но есть возможность описать TcpServer1.OnReceive:=...

вопрос остался открым: как обмениваться данными с подключившимеся клиентами? (используя TTcpServer и TTcpclient)


 
SergeyDon   (2005-07-27 15:14) [5]

при вызове TcpServer1GetThread имею указатель на ClientSocketThread равный Nil


 
SergeyDon   (2005-07-27 15:40) [6]

да походу TcpServer1GetThread вызывается до OnAccept


 
Digitman ©   (2005-07-27 17:15) [7]


> имею указатель на ClientSocketThread равный Nil


и правильно имеешь.

по возврату из твоего обработчика код сервера проанализирует, nil ли ты вернул, и если nil - сервер создаст (или возьмет из пула) тред на базе предусмотренного им класса с предусмотренной им же же по дифолту функц-тью созданного им треда


 
SergeyDon   (2005-07-29 15:20) [8]

да броня крепка :)

ctrl+f1 не помогло :(

кто может разясните как обмениваться данными в обоих направлениях с подключившимеся клиентами? (используя TTcpServer и TTcpclient)

может кто подскажет больше по событию OnGetThread
чем
A wrapper for the TServerSocketThread event of the same name.


 
Fay ©   (2005-07-29 15:49) [9]

2 SergeyDon   (29.07.05 15:20) [8]
1) Сокеты блокирующие?
2) Тебе критично использовать TTcpServer?


 
SergeyDon   (2005-07-29 16:22) [10]

to Fay
1) TcpServer.BlocMode = bmThreadBlocking
2) неочень понял вопрос.

Задача организовать обмен данными с удаленными клиентами.
клиенты подключаются к локальной сети (например через модем)/или уже включены в локальную сеть где работает сервер.
ответ сервера клиенту зависит от времени, типа запроса и др. факторов.

Раньше это реализовывалось используя TServerSocket и TClientSocket (все работало, работает и устраивает), но вот настал момент когда любопытство взяло своё. На форуме все пытаются использовать TcpServer & TcpClient вот и начали переписывать приложение.

Паралельно поставили задачу сделать доступ к информации через
Web -интерфейс но это пока я даже ещё не представляю как.


 
Fay ©   (2005-07-29 16:39) [11]

2 SergeyDon   (29.07.05 16:22) [10]
Проверь почту. Я модуль отправил, который мы щяз используем. Вполне себе читаемый, часть кода вАщЕ стырена из Sockets 8).



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

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

Наверх




Память: 0.49 MB
Время: 0.037 c
14-1129805685
tayim
2005-10-20 14:54
2005.11.13
установка BDE


1-1130077304
markers
2005-10-23 18:21
2005.11.13
Визуальные проблемы TreeView


10-1107425579
Dixi
2005-02-03 13:12
2005.11.13
Создание ActiveX...


3-1127554610
hooky-mars
2005-09-24 13:36
2005.11.13
Access как сервер


2-1130079779
Вася
2005-10-23 19:02
2005.11.13
Свойсво DBGride