Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
2-1129725400
kolos_rus
2005-10-19 16:36
2005.11.13
Диспетчер печати


1-1129886616
VID
2005-10-21 13:23
2005.11.13
Как выводить запрос на сохранение измений в Excel ?


2-1130038627
Vitaliy
2005-10-23 07:37
2005.11.13
Создание процедуры - оператора


2-1129720063
Df23
2005-10-19 15:07
2005.11.13
Не понимаю, почему так.


2-1130096590
redlord
2005-10-23 23:43
2005.11.13
ХЕШ код строки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский