Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> telnet и php, не могу найти решение 
V
    Опции темы
ArNic
Дата 3.9.2007, 14:00 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



Хотел сделать скрипт в php4, для проверки статусма хабов пиринга (с локального сайта, запущенного через denver - но не в этом суть)

Попробовал с помощью скрипта: 
Код

<?php
$server = "10.16.1.164";
$port = 411;
$fp = fsockopen ("udp://".$server,$port);
if (!$fp){echo "не доступен";}
else {echo "включен";}
?>


И типа всегда коннектится. 
Тогда я проверил через telnet - он с хабом не стал связываться (и не должен был, потому, что хаб был в дауне)

Может кто поможет и скажет:
1. Есть ли какая нибудь команда в php наподобие telnet
2. Если нет то порекомендуйте, как проверить стату хабов пиринга
3. Может я где ошибся?

Буду благодарен за помощь

Это сообщение отредактировал(а) ArNic - 3.9.2007, 14:01
PM MAIL ICQ   Вверх
sTa1kEr
Дата 3.9.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



fsockopen
Цитата

Warning


UDP sockets will sometimes appear to have opened without an error, even if the remote host is unreachable. The error will only become apparent when you read or write data to/from the socket. The reason for this is because UDP is a "connectionless" protocol, which means that the operating system does not try to establish a link for the socket until it actually needs to send or receive data. 

В крации: при соединении по UDP нельзя полагаться только на сам коннект, нужно так же попытаться получить или отправить на него какие-либо данные.
PM MAIL   Вверх
ArNic
Дата 3.9.2007, 14:43 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



Посоветуйте тогда как быть.... я мало знаю php

Добавлено через 10 минут и 27 секунд
Вообще у меня уелью было проверять статус хабов p2p сетей, в идеале их можно проверить на работоспособность или нет? Мне бы код, ато я заколебался бегать по 30 хабам, и проверять когда же он законнектится!
PM MAIL ICQ   Вверх
sTa1kEr
Дата 3.9.2007, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



ArNic, а какая сеть? DC++ ?
PM MAIL   Вверх
ArNic
Дата 3.9.2007, 18:20 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



Да.
PM MAIL ICQ   Вверх
sTa1kEr
Дата 3.9.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Нашел спецификацию протокола Direct Connect http://kjarni.cc/files/dc/dcprot.htm
Цитата

Hubs listen on TCP port 411 and allow many clients to connect and exchange commands such as searches and chat messages.

Т.е. соединение с хабом происходит через TCP протокол, а через UDP уже происходит соединение Client-Client, т.о. достаточно законнектиться по TCP и для надежности попытаться получить отклик от хаба (а в идеале, его можно еще и проанализировать). В конечном случае получалась следующая функция
Код

function DCCheck($server, $port, $timeout)
{
   $return = false;
   $fp = @fsockopen("tcp://".$server, $port, $errno, $errstr, $timeout);
   if ($fp)
   {
      stream_set_timeout($fp, $timeout);
      fwrite($fp, "Connect\r\n");
      $response = fread($fp, 1024);
      if (!empty($response) && preg_match("/^\\\$Lock\s/i", $response))
      {
         $return = "No Name";
         stream_set_timeout($fp, 1);
         $response = fread($fp, 1024);
         if (!empty($response) && preg_match("/^\\\$HubName\s(.*?)\|/i", $response, $m))
         {
            $return = $m[1];
         }
      }
      fclose($fp);
   }
   return $return;
}

if (($name = DCCheck("dc.tiera.ru", 4444, 10)) !== false)
{
   echo "Hab name: $name\n";
}
else
{
   echo "Hab in down\n";
}


Это сообщение отредактировал(а) sTa1kEr - 3.9.2007, 20:46
PM MAIL   Вверх
ArNic
Дата 3.9.2007, 20:35 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



Большая благодарность sTa1kEr, он очень качественно подошел к проблеме. Прошу модераторов обратить внимание на этого человека и выделить его как-либо! (сам я пока даже репутацию поднять не могу!)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0794 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.