Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];

Вниз

TIdTcpServer,TIdTcpClient   Найти похожие ветки 

 
Hereticsoul ©   (2005-11-08 15:31) [0]

Привет мастерам!
Подскажите пожалуйста в моей проблемке.

Вообщем написал чат для хранения сообщений использую MySQL(ну удобно...можно посылать сообщения в оффлайне и проч прелести...типа логов) но мне надо было знать когда кто нибудь отправит сообщение и заставить клиента обновиться.Сначала я взял Tserversocket и Tclientsocket они вроде работали нормально, но сервер со временем вылетал с ошибкой((( и сейчас я хочу это заменить чем нибудь другим...я схватился за сабж но так и не понял как это все заставить работать т.к. у клиента нет такой вещи как например события "Если кто нить че нить прислал"...скачав пример с сайта Indy я был крайне удивлен (кому интересно может посмотреть
http://www.projectindy.org/DemoDownloads/Indy9Demos_26Oct04.zip        
1,3 Mb) вообщем такой подход мне не особо подходит....
мне остается надеятся что может кто нить поможет??


 
Digitman ©   (2005-11-08 15:39) [1]


> взял Tserversocket и Tclientsocket они вроде работали нормально,
>  но сервер со временем вылетал с ошибкой


с учетом ошибок в ТВОЕМ алгоритме работы с Tserversocket - ничего удивительного .


> сейчас я хочу это заменить чем нибудь другим


... а потом и третьим, и четвертым, и столохматым) ..

толку-то от замены, если ты споткнувшись о первую же непонятную тебе ошибку и даже не сделав попытки разобраться в ней начинаешь пенять на компонент ?


 
Slym ©   (2005-11-08 15:44) [2]

Hereticsoul ©   (08.11.05 15:31)
события "Если кто нить че нить прислал"...

У клиента есть такое событие
Hereticsoul ©   (08.11.05 15:31)
но сервер со временем вылетал с ошибкой

У ошибки есть сообщение?
Hereticsoul ©   (08.11.05 15:31)
вообщем такой подход мне не особо подходит

Какой такой, и чем именно?


 
Hereticsoul ©   (2005-11-08 16:19) [3]


> с учетом ошибок в ТВОЕМ алгоритме работы с 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;


 
Digitman ©   (2005-11-08 16:29) [4]


> Это весь сервер


ну так а что ж ты хотел ?

примитивный сервер - примитивные и результаты ... ни обработки ошибок, ни анализа результата вызова send-метода ...


 
Hereticsoul ©   (2005-11-08 16:46) [5]

Ну что ж я взываю к помощи...научи пожалуйста...

И все же на каких принципах работать с сабжем???


 
Digitman ©   (2005-11-08 16:58) [6]


> на каких принципах работать с сабжем?


как минимум на 3-х

1. Обязательная обработка обытия OnClientError

2. Обязательный анализ результатов, возвращаемых Send/Receive-функциями

3. Задействование обработчика события OnClientWrite (зависит от результатов вызовов Send-методов)


 
Eraser ©   (2005-11-08 22:16) [7]


> Hereticsoul ©   (08.11.05 16:19) [3]

Пример работы с Indy, который ты привёт скорее показывает как НЕ надо работать с этими компонентами.

Неколько примеров есть тут http://www.atozed.com/indy/Demos/

PS Устанавливай Indy 10.


 
Hereticsoul ©   (2005-11-09 17:24) [8]

Спасибо господа огромное...буду делать выводы)))
А пример на полном серьезе оффициальный)))) сам удивлялся и не мог понять )



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.043 c
3-1135252523
VeB
2005-12-22 14:55
2006.02.19
Автоматизировать ввод данных


1-1137591191
kyn66
2006-01-18 16:33
2006.02.19
Сложный запрос по таблице


2-1138553263
Balex
2006-01-29 19:47
2006.02.19
Как удалить EXE-файл, который меня запустил?


15-1138275515
DesWind
2006-01-26 14:38
2006.02.19
Проблема с перепрошивкой BIOS


2-1138968917
~ShamaN~
2006-02-03 15:15
2006.02.19
Перемещение курсора в DateTimePicker





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский