![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TIdTcpServer,TIdTcpClient [D7, WinXP]
Hereticsoul © (2005-11-08 15:31:00)Привет мастерам!
Подскажите пожалуйста в моей проблемке.
Вообщем написал чат для хранения сообщений использую MySQL(ну удобно...можно посылать сообщения в оффлайне и проч прелести...типа логов) но мне надо было знать когда кто нибудь отправит сообщение и заставить клиента обновиться.Сначала я взял Tserversocket и Tclientsocket они вроде работали нормально, но сервер со временем вылетал с ошибкой((( и сейчас я хочу это заменить чем нибудь другим...я схватился за сабж но так и не понял как это все заставить работать т.к. у клиента нет такой вещи как например события "Если кто нить че нить прислал"...скачав пример с сайта Indy я был крайне удивлен (кому интересно может посмотреть
http://www.projectindy.org/DemoDownloads/Indy9Demos_26Oct04.zip
1,3 Mb) вообщем такой подход мне не особо подходит....
мне остается надеятся что может кто нить поможет??
Hereticsoul (2005-11-09 17:24:00) [1]Спасибо господа огромное...буду делать выводы)))
А пример на полном серьезе оффициальный)))) сам удивлялся и не мог понять )
Eraser (2005-11-08 22:16:00) [2]
> Hereticsoul © (08.11.05 16:19) [3]
Пример работы с Indy, который ты привёт скорее показывает как НЕ надо работать с этими компонентами.
Неколько примеров есть тут http://www.atozed.com/indy/Demos/
PS Устанавливай Indy 10.
Digitman (2005-11-08 16:58:00) [3]
> на каких принципах работать с сабжем?
как минимум на 3-х
1. Обязательная обработка обытия OnClientError
2. Обязательный анализ результатов, возвращаемых Send/Receive-функциями
3. Задействование обработчика события OnClientWrite (зависит от результатов вызовов Send-методов)
Hereticsoul (2005-11-08 16:46:00) [4]Ну что ж я взываю к помощи...научи пожалуйста...
И все же на каких принципах работать с сабжем???
Digitman (2005-11-08 16:29:00) [5]
> Это весь сервер
ну так а что ж ты хотел ?
примитивный сервер - примитивные и результаты ... ни обработки ошибок, ни анализа результата вызова send-метода ...
Hereticsoul (2005-11-08 16:19:00) [6]
> с учетом ошибок в ТВОЕМ алгоритме работы с Tserversocket
> - ничего удивительного
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
Begin
For i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
Begin
ServerSocket1.Socket.Connections[i].SendText('U'+#10#13);
End;
End;
Это весь сервер.Большего мне от него и не надо.
> У клиента есть такое событие
OnConnected
OnDisconnected
OnStatus
OnWork
OnWorkBegin
OnWorkEnd
Где?
Либо я не понял твоего сарказма.....
> Какой такой, и чем именно?
Скачал?Посмотрел?Увидел? Вообщем в клиенте в демо чата от инди на форме висит таймер и OnTimer клиент начинает пытаться читать....вообщем смотри сам
procedure TForm1.Timer1Timer(Sender: TObject);
var
Com,
Msg : String;
begin
if not IdTcpClient1.Connected then
exit;
Msg := IdTCPClient1.ReadLn('', 5); //читаем (таймаут 5м/с)
if Msg <> '' then
if Msg[1] <> '@' then
begin
{ Not a system command }
memLines.Lines.Add(Msg);
end
else
begin
{ System command }
Com := UpperCase(Trim(Copy(Msg, 2, Pos(':', Msg) -2)));
Msg := UpperCase(Trim(Copy(Msg, Pos(':', Msg) +1, Length(Msg))));
if Com = 'CLIENTS' then
lbClients.Items.CommaText := Msg;
end;
end;
Slym (2005-11-08 15:44:00) [7]Hereticsoul © (08.11.05 15:31)
события "Если кто нить че нить прислал"...
У клиента есть такое событие
Hereticsoul © (08.11.05 15:31)
но сервер со временем вылетал с ошибкой
У ошибки есть сообщение?
Hereticsoul © (08.11.05 15:31)
вообщем такой подход мне не особо подходит
Какой такой, и чем именно?
Digitman (2005-11-08 15:39:00) [8]
> взял Tserversocket и Tclientsocket они вроде работали нормально,
> но сервер со временем вылетал с ошибкой
с учетом ошибок в ТВОЕМ алгоритме работы с Tserversocket - ничего удивительного .
> сейчас я хочу это заменить чем нибудь другим
... а потом и третьим, и четвертым, и столохматым) ..
толку-то от замены, если ты споткнувшись о первую же непонятную тебе ошибку и даже не сделав попытки разобраться в ней начинаешь пенять на компонент ?