![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать активен ли удаленный сервер? [WinXP]
Andrewtitoff © (2008-03-04 12:59:00)Понятно что его нужно спросить об этом, собственно вопрос в том и состоит как это сделать, т.к. если я просто шлю какой либо текст - то соответственно если удаленный сервер слушает - то он мне нормально отвечает, а вот если в ответ тишина - то прога наглухо виснет...
Посылаю текст таким образом :
procedure TMyChat.SendCommand(s:string);
begin
TcpClient1.Active := True;
try
if TcpClient1.Connect then
begin
TcpClient1.Sendln(s);
Edit.Clear;
end;
finally
TcpClient1.Disconnect;
end;
end;
grisme (2008-03-06 17:19:00) [1]
> Reindeer Moss Eater © (04.03.08 15:33) [21]
палицо %) щас будут отмазки
Сергей М. (2008-03-04 15:40:00) [2]
> Reindeer Moss Eater © (04.03.08 15:24) [19]
>
> Возьми TidTCPClient
Если мне не изменяет память, автор некоторое время назад чуть ли не из штанов выпрыгмвал, пытаясь аргументировать выбор им именно TCPClient/Server)
> Andrewtitoff © (04.03.08 15:30) [20]
> вываливается с ошибкой
У меня не "вываливается". В чем я провинился ?) Что делаю не так ?)
Reindeer Moss Eater (2008-03-04 15:33:00) [3]Мне никто не сказал, я твой код почитал
Andrewtitoff (2008-03-04 15:30:00) [4]2 Reindeer Moss Eater
А кто тебе вообще сказал что это чат?, можно конечно использовать и ка чат, но меня это функция меньше всего интересует...
2 Сергей М.
Пасибо, тока теперь буквально через пару секунд вываливается с ошибкой "access violation at 0x7c90eddc: write of address 0x00040fbl".... =(((
Reindeer Moss Eater (2008-03-04 15:24:00) [5]Возьми TidTCPClient. Там есть и таймаут и ексепшен в случае если целевой хост не слушает.
Сергей М. (2008-03-04 15:14:00) [6]
> А на что это вообще влияет?
Как раз на то и влияет - "висеть" не будет твоя программа.
> это просто в свойствах клиента и сервера поменять?
Сервер не трожь - не о нем пока речь.
> смутно представляю что это и зачем
Вот как раз и повод есть разобраться.
Погугли по теме "сокеты блокирующий неблокирующий режим"
Reindeer Moss Eater (2008-03-04 15:12:00) [7]Ну в принципе я не расчитывал на то что это прогой будет пользоваться какой либо пользователь кроме меня
Сетевой чат с самим собой?
:)
Andrewtitoff (2008-03-04 14:53:00) [8]2 Сергей М.
Ну в принципе я не расчитывал на то что это прогой будет пользоваться какой либо пользователь кроме меня, так что нервничать не будет... =)))
>Либо переходи на неблок.режим
А на что это вообще влияет?, это просто в свойствах клиента и сервера поменять?, я просто с этим не разбирался и поэтому смутно представляю что это и зачем... =(((
>либо делай коннект в доп.потоке
А енто я тож не знаю как правильно сделать, боюсь ошибок много будет, ты же сам в свое время сказал что мне рано еще с этим разбираться... =)))
Сергей М. (2008-03-04 14:37:00) [9]А какая для юзера разница, наглухо или не наглухо ?
Все равно нервиничать будет и материть разработчика)
Логику надо менять, а не "проблемы" выискивать.
Либо переходи на неблок.режим либо делай коннект в доп.потоке
Andrewtitoff (2008-03-04 14:26:00) [10]2 DiamondShark
Так я же говорю что она виснет когда нет ответа.., когда ответ есть - все в норме...
Меня так же интересует случай когда на удаленном компе она вообще не запущенна, а она как раз и виснет в этом случае....
DiamondShark (2008-03-04 14:14:00) [11]Дык, известно в чём проблема: программа неправильно написана.
Ты ещё ни слова не написал о том, как ты принимаешь ответ.
Andrewtitoff (2008-03-04 14:07:00) [12]То что программа виснет наглухо, а не на небольшой таймаут...
Сергей М. (2008-03-04 14:06:00) [13]
> в чем тогда может быть проблема?
Что ты считаешь "проблемой" ?
Andrewtitoff (2008-03-04 13:56:00) [14]Ясно, так а в чем тогда может быть проблема?
Andrewtitoff (2008-03-04 13:56:00) [15]Ясно, так а в чем тогда может быть проблема?
Сергей М. (2008-03-04 13:47:00) [16]
> А как его поменять?
А его и не надо менять.
Логику свою надо менять, а не таймаут.
Возьми любой сторонний тестер, к примеру, http://www.networkcenter.info/и проверь с пом. него доступность того же самого неактивного порта, в который ты стучишь и при этом висишь до второго пришествия. Тестер будет ждать не более полминуты, убедись сам.
Andrewtitoff (2008-03-04 13:40:00) [17]2 Reindeer Moss Eater ©
А как его поменять?
2 Сергей М. ©
>Не похоже это на "проблему" коннекта к отсутствующему хосту.
А что это может быть?
Сергей М. (2008-03-04 13:39:00) [18]
> Reindeer Moss Eater © (04.03.08 13:25) [4]
Это ж, наверно, от конкретного сокет-провайдера зависит ..
Сергей М. (2008-03-04 13:26:00) [19]
> уже 5 мин висит
А вот это уже подозрительно.
Не похоже это на "проблему" коннекта к отсутствующему хосту.
> Можно сделать чего нить на подобии Ping-а тока для используемого
> мною порта?
Нет, нельзя.
ping не имеет отношения к портам.
> есть какя нибудь разница или это равнозначные команды?
Концептуальной разницы нет - и там и там инициируется операция коннекта.
Reindeer Moss Eater (2008-03-04 13:25:00) [20]дефолтный таймаут - инфинити