Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать активен ли удаленный сервер? [WinXP]


Страницы:   1 2

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]

дефолтный таймаут - инфинити


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо