Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.025 c
4-1126252766
Андрей Жук
2005-09-09 11:59
2005.11.13
Работа с национальными клавиатурами


1-1129203791
VIsa
2005-10-13 15:43
2005.11.13
Помогите разобраться с прозрачностью в TPNGImage


4-1125936978
Still Swamp
2005-09-05 20:16
2005.11.13
Как сменить пароль для пользователя


4-1126100827
Unit1
2005-09-07 17:47
2005.11.13
WM_MOUSEMOVE


2-1129575723
ctokas
2005-10-17 23:02
2005.11.13
90 DEC в 90HEX




   Наверх