![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 25.03.2007
Сообщений: 166
|
![]()
Категорически всех приветствую! Проблема такая: как то я написал чат для локалки с помощью tclientsocket & tserversocket, теперь я хочу сделать это в indy. Мне нужно постоянно проверять пришло ли сообщение от других юзеров, но если я вызываю idtcpip1.readln тогда, когда ничего не пришло, прога виснит. Как вызывать idtcpip1.readln именно тогда, когда сообщение приходит?
|
![]() |
![]() |
![]() |
#2 |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
![]()
Udp не катит для чата?
ну тут нужно исключение влепить... Наверное, так: with IdTCPClient do begin try connect; writeln(); ..... otvet:=readLn; .... except disconnect; end; ну слысл такой: конектишься, если нет связи, то дисконект.... Ведь сервер вы настраиваете на IdTCPServerexecute(AThread:TidPeerT hread), тоесть если клиент делает запрос и есть связь, то сервер ответит.... он не ответит в том случае, когда нет соединения....
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Последний раз редактировалось Pitbull; 20.09.2007 в 15:38. |
![]() |
![]() |
![]() |
#3 |
.NET-чик
Форумчанин
Регистрация: 24.03.2007
Сообщений: 569
|
![]()
У Клиента есть такое событие как OnWork и OnStatus. То проверку что сервер ответил наверное лучше сделать на OnWorkEnd либо попробуйте на OnStatus.
Если с сервера нужно ответить именно определенному клиенту то тут лучше использовать его (AThread:TidPeerThread). Совет, когда клиент коннектится, то сохранят полностью весь AThread, а ответ потом делается вот так AThread.Connection.ReadLn(); Это если к примеру на клиенте запущено 2 проги клиента, чтобы ответ пришел именно тому куда надо ![]()
"Разработка под веб - как работа с пылесосом: нихрена не прикольно, но засасывает"
Мо маленький городок ![]() |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 25.03.2007
Сообщений: 166
|
![]()
Если делаю исключение или проверку в событии onStatus - прога так же виснит. На события OnWork, OnWorkBegin, OnWorkEnd - не как не реагирует. Может есть еще какието способы? Подскажите пожалуйста.
|
![]() |
![]() |