![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вопрос по indy client-server [D6, Win95/98]
Мыш © (2003-04-22 02:03:00)можно ли послать данные от сервера клиенту (как с обычными TclientSocket и TserverSocket) и если да, то как? А то как-то кажется не очень красиво использовать по паре компонентов клиент-сервер и на приложении клиенте и на приложении сервере.
$hade (2003-04-23 15:50:00) [1]2S@shka ©
раз клиент - значит можно и некрасиво делать? :-)
я имел ввиду стиль программирования...а не ошибку...
Чую я бесовщину , но обосновать не могу.(с)ПИСЬМО ОТЦА СЕРАФИМИЯ :-)
S@shka (2003-04-23 15:33:00) [2]почему?
на то он и клиент
$hade (2003-04-23 15:23:00) [3]без потока на клиенте можно сделать тоже самое с помощью таймера
OnTimer
if TCP.Connected then
TCP.ReadLn(Ln);
и все....почти...
Тока это все както....неправильно что-ли....некрасиво....:-)
S@shka (2003-04-23 14:53:00) [4]Все очень просто
просто давай клинты переодически читать после соединения
типа
TCP.Connect;
TCP.Readln();
если данные придут клиент их получит :)
$hade (2003-04-23 06:59:00) [5]у какого потока нет onexecute??
покажите мне тот TThread с котором нет метода Execute! :-)
Ты сам создаешь TThread в котором в методе Execute читаешь данные от сервера....
Мыш (2003-04-22 14:46:00) [6]>> и в Execute этого потока:
Так у этого потока нет обработчика onexecute !
$hade (2003-04-22 10:24:00) [7]Ааааааа! ))) Моя старая ошибка!! ))
вощщем так....
на сервере в OnExecute
Athread.connection.Read{ReadStream,ReadBuffer...короче что тебе надо прочитать от клиента...}
на клиенте создаешь поток (что-нить типа TClientReadThread)
и в Execute этого потока:
ReadBuffer(к примеру...)- получение данных
обработка полученных данных...
! WriteBuffer - отправка данных{результата например}
хотя отправлять данные ты можешь в любом месте....
>я не нашел методов у сервера, аналогичных client.write
на сервере есть OnConnected OnExecute OnDisconnect
у них у всех параметр AThread - поток ассоциированый с клиентом
т.е. AThread.Connection.{вот тут все твои методы write read etc.}
Это только начало всего гимора с которым ты столкнешся...:-)
Мыш (2003-04-22 10:09:00) [8]Да? А я не нашел методов у сервера, аналогичных client.write, а клиента нет события onexecute, в котором можно получить TIdPeerThread...
Spartak (2003-04-22 07:15:00) [9]>Мыш
>А то как-то кажется не очень красиво использовать по паре
> компонентов клиент-сервер
а ты не пользуйся по паре ! на 1 прогу кидаешь сервер а на 2 клиент и всё ! зачем по паре ( книжку почитай )
$hade (2003-04-22 05:48:00) [10]можно. точно так же как и с обычными TclientSocket и TserverSocket