-
Добрый вечер!
Проблема следующая: нужно определить, запущен ли сервер приложения. Как проверить, открыт на сервере порт или нет?
Использую TClientSocket. По Open вылетает исключение.
-
Каким рейсом ?
-
ESocketError)))
-
Оч содержательная информация о рейсе..
-
> Как проверить, открыт на сервере порт
Ну и за каким лешим знать, что скрывается за этим портом - сервер приложений, или сервер отложений, или сервер заложений, или .. ?)
Кому это интересно, подумай ?)
-
...извините...
иключение что-то вроде "удаленный компьютер отверг соединение" из-за того, что сервер не запущен. Он действительно не запущен.
А нужно проверять, запущен ли, а если запущен - подключаться.
-
объясню подробнее.
имеются 2 программы.
клиент запущен постоянно.
когда стартует сервер, нужно чтобы клиент это увидел и передал другому приложению информацию. вотъ.
-
> сервер не запущен. Он действительно не запущен
> нужно проверять, запущен ли
ты с головой вообще дружишь ?
Тебе же это самое "что-то вроде" дает понять - НЕ "запущен" !
Что еще проверять-то ? Уже ведь получил отлуп)..
-
> нужно чтобы клиент это увидел и передал другому приложению
> информацию. вотъ
Понял.
Картина маслом:
- Пацаны ! В чипок водку завезли ! Беги быстрей, а то кончится !
))
-
...не правильно выразился (опять).
другое приложение - это и есть сервер, который стартовал.
-
> Артем (24.04.09 22:10) [9]
Вот и трижды подумай, прежде чем "выражаться")
> это и есть сервер, который стартовал.
И ?
ESocketError - это класс исключения, не более того.
О состоянии "стартованности" сервера КЛАСС не может сказать НИЧЕГО
-
А как обработать это исключение, чтобы клиент время от времени проверял, готов ли сервер, а по готовности делал, что ему нужно?
-
А ты его, исключение-то это, как "поймал" ?
-
сообщение выскакивает с кодом ошибки.
try
except как-то не помогает...
-
> [13] Артем (25.04.09 01:02)
> try
> except как-то не помогает
Они и не помогут в ctNonBlocking (с Blocking не работал, не знаю).
> сообщение выскакивает с кодом ошибки
Следующий закономерный вопрос будет: "Код ошибки значения, конечно, не имеет?"
Есть такое событие у TClientSocket - OnError. В нем можно (и нужно) узнавать и обрабатывать код возникшей ошибки. Полезно так же нажать F1 и почитать, что же это событие из себя представляет.
Как говорил Сергей М. © в какой-то ветке (ссылку не дам, давно было), минимальный код обработки ошибки должен состоять из:
ErrorCode:=0;
Socket.Close
Что за ошибка возникла, и как после нее жить, можно узнать на
http://msdn.microsoft.com/en-us/library/ms740668.aspx
-
Огромное спасибо, помогло....
-
Можно подробнее ErrorCode:=0 это что? от куда брать эту переменную?
-
> Артем (24.04.2009 21:51:00) [0]
Это такое сообщение "Вылетаю, встречайте завтра"
-
> Артем (24.04.2009 22:02:05) [5]
Тогда порт открыт.
-
> Сергей М. (24.04.2009 22:05:07) [7]
Вообще то запущен, но автор персона нон грата.
-
> Артем (24.04.2009 22:10:09) [9]
Думай еще.
-
Anatoly Podgoretsky © (21.01.11 21:42) [17]
Некрофил
-
> Anatoly Podgoretsky © (21.01.11 21:45) [20]
>
> > Артем (24.04.2009 22:10:09) [9]
>
> Думай еще.
Почти 2 года уже думает. Считаешь мало?
-
Я настучу, это Tonick2001 виноват, он трупа полюбил.
-
> Германн (21.01.2011 23:45:22) [22]
Не виновая я, он сам пришел.
-
> Anatoly Podgoretsky © (22.01.11 00:25) [24]
>
> > Германн (21.01.2011 23:45:22) [22]
>
> Не виновая я, он сам пришел.
Твой клиент плохо показывает даты сообщений или ты сам на них не обращаешь внимания?
Первое требует доработки. Добавь это в todo-list.
Второе ничего не требует. Мы и так тебя нормально воспринимаем.
:)