С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
1

Проверка, включен ли сервер

19.11.2013, 23:29. Показов 4427. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго всем времени суток!

Столкнулся с не совсем понятной проблемой.
Есть сервер. он иногда работает иногда нет. Я на форму бросил картинку и tcpclient что бы проверять работает он или нет.
По нажатию на кнопку свойству актив клиента задаю значение тру
а на самом клиенте создал событие коннект
в котором прописал:
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.TcpClient1Connect(Sender: TObject);
begin
if TCPClient1.Connected then
begin
  sImage2.Visible := true;
end else
begin
  sImage2.Visible := false;
end;
В свойствах клиента прописал хост удалённого сервера и порт для подключения. Но почему-то даже если сервер выключен, и даже если я в свойстве хост вместе имени пишу просто vasya он все равно рисует картинку, будто сервер включен...

Прошу подсказки, где я смотрю не в ту сторону?

Заранее благодарю!

Добавлено через 5 часов 52 минуты
Решил вопрос, заменив TCPClient на сокет.
Но тут проблема. не отрабатывает try
Delphi
1
2
3
4
5
try
    ClientSocket1.Active := true;
  except
    sButton4.Caption := 'Включить';
  end;
выдаёт delphi asynchronous socket error 10061
Хотя должен бы просто отработать exception...

Добавлено через 3 минуты
Решил проблему добавлением обработчика ошибок самого сокета, но всё равно не понятно, почему не отрабатывает try
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2013, 23:29
Ответы с готовыми решениями:

Программа клиент-сервер. Проверка знаний.
Приветствую. С сетями в дельфях пока не работал. Вот пытаюсь научиться. В общем суть такая. Есть...

Проверка включен ли SQL Server
Как программно проверить запущен ли SQL Server, а также запускать и останавливать его?

Как показать на сайте включен ли сервер?
В общем нужно что бы на сайте показывалось включен сервер или нет (сервер радио) как это...

Проверка, включен ли у пользователя JavaScript, при помощи PHP
Хочу сделать на сайте проверку, включен ли у пользователя javascript или нет, при помощи PHP, так...

10
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
19.11.2013, 23:44 2
Цитата Сообщение от NapalmRain Посмотреть сообщение
где я смотрю не в ту сторону?
Чему у тебя равно BlockMode ?

Если bmNonBlocking, то такое поведение совершенно нормально, ибо св-во Connected в этом случае фиксирует факт успешного запуска асинхронной неблокирующей операции коннекта, а не факт успешного завершения этой операции.

Цитата Сообщение от NapalmRain Посмотреть сообщение
не отрабатывает try
И не обязан.
Опять же - чему равно ClientType ?
Если ctNonBlocking, то Active = True (или вызов Open, что эквивалентно) запускает асинхронную неблокирующую операцию коннекта, об успехе которой сообщит событие OnConnect, а о неуспехе - OnError.
Поскольку хоста с именем "Просто Вася" не существует, операция асинхр.коннекта завершается с ошибкой, погасить которую можно установив ErrorCode = 0 в обработчике OnError, при этом в том же обработчике в обязательном порядке следует закрыть гнездо вызовом Socket.Close, в противном случае утечка ресурсов гарантирована.
1
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
20.11.2013, 16:40  [ТС] 3
Установил свойство сокета на на bmBlocking, но мне это не помогло. Я знаю точно, что серверная программа выключена. Через web ресурсы проверяю доступность порта а так же через сокеты php скриптов на своём сайте, всегда выдаёт, что выключена. А сокет делфи упорно радуется подключению к хрен пойми чему.
При этом если указать адрес 127.0.0.1, то он радостно заявляет о невозможности подключения, а если удалённый ip, то всё ему хорошо... Не могу понять, в чём проблема...
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
20.11.2013, 17:18 4
А где у тебя обработка OnError ?
Она обязана быть ..
0
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
20.11.2013, 20:59  [ТС] 5
Есть. В ней написано приводить актив в false;
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
20.11.2013, 21:59 6
Цитата Сообщение от NapalmRain Посмотреть сообщение
Есть
И что ? Оно тоже "неправильно" срабатывает ?
0
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
20.11.2013, 22:43  [ТС] 7
Цитата Сообщение от mss Посмотреть сообщение
И что ? Оно тоже "неправильно" срабатывает ?
Очень странная ситуация. Одни и те же исходники на домашнем компе отрабатывают прекрасно, на рабочем вообще не реагируют на внешние раздражители.

Но, думаю, это проблема конкретной машины.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
20.11.2013, 22:50 8
Я задал вполне конкретный вопрос, не понять который сложно - срабатывает ли событие OnError и чему равно значение параметра rc при вызове обработчика ..
0
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
20.11.2013, 22:52  [ТС] 9
Цитата Сообщение от mss Посмотреть сообщение
Я задал вполне конкретный вопрос, не понять который сложно - срабатывает ли событие OnError и чему равно значение параметра rc при вызове обработчика ..
Я ответил на него, хоть и слегка витиевато, на домашнем компьютере отрабатывает, на рабочем нет. Словно никаких ошибок не происходит. С чем это связано, не знаю. Даже предположить не могу.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
20.11.2013, 23:09 10
Цитата Сообщение от NapalmRain Посмотреть сообщение
С чем это связано, не знаю. Даже предположить не могу
А не надо гадать.
Cледует установить точку останова в тело Sockets.TCustomIpClient.Open, пройти тело пошагово и понять что на самом деле происходит.
0
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
21.11.2013, 09:37  [ТС] 11
Цитата Сообщение от mss Посмотреть сообщение
А не надо гадать.
Cледует установить точку останова в тело Sockets.TCustomIpClient.Open, пройти тело пошагово и понять что на самом деле происходит.
Благодарю за совет, попробую.
0
21.11.2013, 09:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2013, 09:37
Помогаю со студенческими работами здесь

Проверка, работает ли сервер
не подскажите как мне сделать ping для сервера с портом 7777. помогите кто. то есть мне нужно...

LNMP сервер запуск и проверка
Собрал сборку , Ubuntu - Nginx , apache , mysql , phpmyadmin , php . Но как проверить работу NGINX...

Проверка работы MySQL Сервер
Здравствуйте. Установил вот только что MySQL Server 5.6.10. В нескольких мануалах, которые я...

Проверка работает ли RDP сервер
столкнулся с проблемой нужно проверять работает ли сервер проверка должна быть по RDP без визуалной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru