Форум: "Сети";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
Внизпроцедура 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c