![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
BuShaRt |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Задача - организовать провеку сокета на работоспособность т.е. идет ли к нему подключение и передача данных, для проверки автообновления.
Организовал так, в целом вроде все работает, но проскакивают и не рабочие варианты, в чем проблема и как следует дополнить код? |
|||
|
||||
BuShaRt |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Странно, не кто не знает решения данной задачи? :(
не верю... |
|||
|
||||
WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: 6 Всего: 8 |
По тому, что не правильно сформирован вопрос.
Что за сокет? Из кода я вижу, что udp, причем на нем висит какой-то http-сервер. А в чем проблема? В том, что часто пишет нерабочие хосты или рабочие пишет в сломанные? Если первое, то тут просто может быть закрыт доступ на листинг / директории |
|||
|
||||
BuShaRt |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Хотелось бы чтоб проверка была универсальной и не ужели это важно, что висит на данном сокете?
Пропускает с ярлыком "work" нерабочие иногда.
Хм, а как сокеты с этим связанны? Это сообщение отредактировал(а) BuShaRt - 3.6.2007, 13:38 |
||||
|
|||||
WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: 6 Всего: 8 |
BuShaRt, связанно именно тем, что вы шлете <b>HTTP</b>-заголовок
Если это http-прокси или http-сервер, то вроде все будет и не очень плохо, но в случае с проксей не обязательно заработает Потом лучше использовать проверку с типом, те !== на то, что произошел таймаут ну и вконце-концов может не пускать на сокет не только из-за таймаута |
|||
|
||||
BuShaRt |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
![]() Это потому, что я собиралс скрипт из примеров, по суте не очень хорошо разбираясь в сокетах. Я думаю, тогда стоит отбросить код, представленный мной... Вы не могли бы рассказать, оптимальный алгоритм проверки сокетов? (можно и без примера на PHP). Пока перепишу, хоть подробние в сокетах рабзерусь. |
|||
|
||||
BuShaRt |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Я опять не точно выразил мысль?
|
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
Возможно я ошибаюсь, но протокол в имени хоста никогда не указывался и не указывается. На это есть порт. |
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
Мб нечто этого, а то что ты написал - фигня помоему. Если хост отвечает, он и так вернет какой-нибудь ответ, соответственно в твоем случае можно кром проверки коннекта ничего не делать. В моем скрипте нужно прописать тест для разных портов, для 80 я сам написал ![]() |
|||
|
||||
BuShaRt |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
CyClon,
у, как все сложно... А где то может есть, где почитать про разные порты? Их ведь по моему куча разных :( |
|||
|
||||
WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: 6 Всего: 8 |
Сколько портов, столько и протоколов, если не больше
![]() Читай RFC. http://www.rfc-editor.org/ В самом общем случае достаточно просто попробовать с определенным портом соединиться - те проверить открыт он или нет. А проверка на работоспособность каждого сервиса висящего на порту - это занятие утомительное и бессмысленное. Лучше запрограммировать нужные для проверки сервисы и если очень хочется сделать систему плагинов (допустим xml-описание действий нужных для проверки работоспособности протокола), чтобы быстро добавлять для проверки новые порты. |
|||
|
||||
BuShaRt |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
А на сколько логично будет, попробывать записать данные на порт, потом считать эти данные и если получилось объявить порт рабочим?
Добавлено через 1 минуту и 26 секунд ![]() |
|||
|
||||
WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: 6 Всего: 8 |
BuShaRt, обычно используются комманды типа HELO или какая-то последовательность байтов для кажого протокола, чтобы определить, что это он, по этому писать ахинею не катит
|
|||
|
||||
BuShaRt |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
WolfON,
Получаеться, чтоб написать универсальный чикед, нужно организоваться не одну сотную строк кода? и задача достаточно кропотливая? |
|||
|
||||
WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: 6 Всего: 8 |
BuShaRt, более чем много, но как правило достаточно проверить порт на то открыт он или нет и свериться по базе портов к какому он сервису пренадлежит
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |