Форум: "Сети";
Текущий архив: 2009.07.19;
Скачать: [xml.tar.bz2];
ВнизКак узнать активен ли удаленный сервер? Найти похожие ветки
← →
Andrewtitoff © (2008-03-04 12:59) [0]Понятно что его нужно спросить об этом, собственно вопрос в том и состоит как это сделать, т.к. если я просто шлю какой либо текст - то соответственно если удаленный сервер слушает - то он мне нормально отвечает, а вот если в ответ тишина - то прога наглухо виснет...
Посылаю текст таким образом :
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;
← →
Сергей М. © (2008-03-04 13:05) [1]
> прога наглухо виснет
Не "наглухо", а на время дифолтного таймаута ожидания.
← →
Сергей М. © (2008-03-04 13:07) [2]
> TcpClient1.Active := True;
> TcpClient1.Connect
Два раза зупускать коннект - это что, для пущей надежности что ли ?)
← →
Andrewtitoff © (2008-03-04 13:18) [3]А сколько это время дифолтного таймаута ожидания уже 5 мин висит... =(((
Можно сделать чего нить на подобии Ping-а тока для используемого мною порта?
Ой, ну да типа того =)))
А есть какя нибудь разница или это равнозначные команды?
← →
Reindeer Moss Eater © (2008-03-04 13:25) [4]дефолтный таймаут - инфинити
← →
Сергей М. © (2008-03-04 13:26) [5]
> уже 5 мин висит
А вот это уже подозрительно.
Не похоже это на "проблему" коннекта к отсутствующему хосту.
> Можно сделать чего нить на подобии Ping-а тока для используемого
> мною порта?
Нет, нельзя.
ping не имеет отношения к портам.
> есть какя нибудь разница или это равнозначные команды?
Концептуальной разницы нет - и там и там инициируется операция коннекта.
← →
Сергей М. © (2008-03-04 13:39) [6]
> Reindeer Moss Eater © (04.03.08 13:25) [4]
Это ж, наверно, от конкретного сокет-провайдера зависит ..
← →
Andrewtitoff © (2008-03-04 13:40) [7]2 Reindeer Moss Eater ©
А как его поменять?
2 Сергей М. ©
>Не похоже это на "проблему" коннекта к отсутствующему хосту.
А что это может быть?
← →
Сергей М. © (2008-03-04 13:47) [8]
> А как его поменять?
А его и не надо менять.
Логику свою надо менять, а не таймаут.
Возьми любой сторонний тестер, к примеру, http://www.networkcenter.info/ и проверь с пом. него доступность того же самого неактивного порта, в который ты стучишь и при этом висишь до второго пришествия. Тестер будет ждать не более полминуты, убедись сам.
← →
Andrewtitoff © (2008-03-04 13:56) [9]Ясно, так а в чем тогда может быть проблема?
← →
Andrewtitoff © (2008-03-04 13:56) [10]Ясно, так а в чем тогда может быть проблема?
← →
Сергей М. © (2008-03-04 14:06) [11]
> в чем тогда может быть проблема?
Что ты считаешь "проблемой" ?
← →
Andrewtitoff © (2008-03-04 14:07) [12]То что программа виснет наглухо, а не на небольшой таймаут...
← →
DiamondShark © (2008-03-04 14:14) [13]Дык, известно в чём проблема: программа неправильно написана.
Ты ещё ни слова не написал о том, как ты принимаешь ответ.
← →
Andrewtitoff © (2008-03-04 14:26) [14]2 DiamondShark
Так я же говорю что она виснет когда нет ответа.., когда ответ есть - все в норме...
Меня так же интересует случай когда на удаленном компе она вообще не запущенна, а она как раз и виснет в этом случае....
← →
Сергей М. © (2008-03-04 14:37) [15]А какая для юзера разница, наглухо или не наглухо ?
Все равно нервиничать будет и материть разработчика)
Логику надо менять, а не "проблемы" выискивать.
Либо переходи на неблок.режим либо делай коннект в доп.потоке
← →
Andrewtitoff © (2008-03-04 14:53) [16]2 Сергей М.
Ну в принципе я не расчитывал на то что это прогой будет пользоваться какой либо пользователь кроме меня, так что нервничать не будет... =)))
>Либо переходи на неблок.режим
А на что это вообще влияет?, это просто в свойствах клиента и сервера поменять?, я просто с этим не разбирался и поэтому смутно представляю что это и зачем... =(((
>либо делай коннект в доп.потоке
А енто я тож не знаю как правильно сделать, боюсь ошибок много будет, ты же сам в свое время сказал что мне рано еще с этим разбираться... =)))
← →
Reindeer Moss Eater © (2008-03-04 15:12) [17]Ну в принципе я не расчитывал на то что это прогой будет пользоваться какой либо пользователь кроме меня
Сетевой чат с самим собой?
:)
← →
Сергей М. © (2008-03-04 15:14) [18]
> А на что это вообще влияет?
Как раз на то и влияет - "висеть" не будет твоя программа.
> это просто в свойствах клиента и сервера поменять?
Сервер не трожь - не о нем пока речь.
> смутно представляю что это и зачем
Вот как раз и повод есть разобраться.
Погугли по теме "сокеты блокирующий неблокирующий режим"
← →
Reindeer Moss Eater © (2008-03-04 15:24) [19]Возьми TidTCPClient. Там есть и таймаут и ексепшен в случае если целевой хост не слушает.
← →
Andrewtitoff © (2008-03-04 15:30) [20]2 Reindeer Moss Eater
А кто тебе вообще сказал что это чат?, можно конечно использовать и ка чат, но меня это функция меньше всего интересует...
2 Сергей М.
Пасибо, тока теперь буквально через пару секунд вываливается с ошибкой "access violation at 0x7c90eddc: write of address 0x00040fbl".... =(((
← →
Reindeer Moss Eater © (2008-03-04 15:33) [21]Мне никто не сказал, я твой код почитал
← →
Сергей М. © (2008-03-04 15:40) [22]
> Reindeer Moss Eater © (04.03.08 15:24) [19]
>
> Возьми TidTCPClient
Если мне не изменяет память, автор некоторое время назад чуть ли не из штанов выпрыгмвал, пытаясь аргументировать выбор им именно TCPClient/Server)
> Andrewtitoff © (04.03.08 15:30) [20]
> вываливается с ошибкой
У меня не "вываливается". В чем я провинился ?) Что делаю не так ?)
← →
grisme (2008-03-06 17:19) [23]
> Reindeer Moss Eater © (04.03.08 15:33) [21]
палицо %) щас будут отмазки
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2009.07.19;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.007 c