IPB

Здравствуйте, гость ( Вход | Регистрация )

> PHP fsockopen
LLeSS
сообщение Aug 31 2006, 09:38
Сообщение #1


N.N.G.
***

Группа: Posters
Сообщений: 292
Регистрация: 16.10.2005
Пользователь №: 103



кратко:
Код
<?php  
  
  function status_tcp($ip,$port)  
  {  
  if ($ip=="") {
         $ip="192.168.1.2";
                }
  if (@fsockopen($ip, $port, $errno, $errstr, 0.3)) {
             echo "<font color=blue>OnLine</font><p>";
            } else {
             echo "<font color=red>OffLine</font><p>";
                   }  
  }

  function status_udp($ip,$port)  
  {  
  if ($ip=="") {
          $ip="udp://192.168.1.2";
                 }
  if (@fsockopen($ip, $port, $errno, $errstr,1)) {
              echo "<font color=blue>OnLine</font><p>";
             } else {
                  echo "<font color=red>OffLine</font><p>";
                      }  
  }  
  
?>

Основная чать. В ней происходят все расчеты

Код
<CENTER>
  <TABLE BORDER CELLPADDING=5>
  <CAPTION ALIGN=top><h2>Статус серверов</h2>
  </CAPTION>
    <TR>
      <TD><b> Название сервера</b> </TD>
      <TD><b> IP - сервера</b> </TD>
      <TD><b> Статус сервера</b> </TD>
      <TD><b> Дополнительно </b> </TD>
    </TR>
      
    <TR>
      <TD NOWRAP >NFS Undeground 1.4</TD>
      <TD>wow.cheb.ru</TD>
      <TD>  <?php status_tcp("",10800) ?>
      <TD> <a href="http://wow.cheb.ru/forums/index.php?showtopic=15">Настройка игры</a>  <p>
    </TR>

  <TR>
      <TD NOWRAP >Quake 3 1.32 </TD>
      <TD>wow.cheb.ru</TD>
      <TD>  <?php status_udp("", 27960) ?>
      <TD> <a href="http://wow.cheb.ru/forums/index.php?showtopic=8&pid=18&st=0&#entry18">Настройка игры</a>  <p>

    </TR>


Теперь проблема. для открытия тцп порта все нормально и правильно. Но когда и хочю проверить UDP порт. Он мне всегда выдает "OnLine"
Прочитал много мануало, читал в нете. Ничего не помогло. едиственное отличие ТЦП и УДВ это время подключеия к порты. В книгах его вообще нет.

Сообщение отредактировал LLeSS - Aug 31 2006, 10:49
Вернуться к началу страницы
 
+Цитировать сообщение
2 страниц V   1 2 >  
Создать новую тему
Ответов (1 - 19)
LInfo
сообщение Aug 31 2006, 12:34
Сообщение #2


Супер постер
*****

Группа: Posters
Сообщений: 575
Регистрация: 17.11.2005
Из: AfaNet
Пользователь №: 132



Пример 2. Using UDP connection
Код
<?php
$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
if (!$fp) {
   echo "ERROR: $errno - $errstr<br />\n";
} else {
   fwrite($fp, "\n");
   echo fread($fp, 26);
   fclose($fp);
}
?>


--------------------
"неправильная" подпись может быть находкой для шпионов

город: Город Афанет (траф)
Yandex.Деньги 4100151149425

#КартинкА#
Вернуться к началу страницы
 
+Цитировать сообщение
Гость_karpen_*
сообщение Aug 31 2006, 13:02
Сообщение #3





Guests






Цитата из книги "Протоколы TCP/IP", том 1 (в интернете легко её найти).
Цитата
UDP использует Internet Protocol для передачи сообщения от одной машины к другой и обеспечивает ту же самую ненадежную доставку сообщений, что и IP. UDP не использует подтверждения прихода сообщений, не упорядочивает приходящие сообщения и не обеспечивает обратной связи для управления скоростью передачи информации между машинами. Поэтому, UDP сообщения могут быть потеряны, размножены или приходить не по порядку. Кроме того, пакеты могут приходить раньше, чем получатель сможет обработать их. В общем можно сказать, что: UDP обеспечивает ненадежную службу без установления соединения и использует IP для транспортировки сообщений между машинами. Он предоставляет возможность указывать несколько мест доставки на одном компьютере.
Прикладные программы, использующие UDP, несут полную ответственность за проблемы надежности, включая потерю сообщений, дублирование, задержку, неупорядоченность или потерю связи. К несчастью, программисты часто игнорируют эти проблемы при разработке программ. Кроме того, поскольку программисты тестируют свои программы, используя надежные высокоскоростные локальные сети, тестирование может не выявить возможные ошибки. Таким образом, программы, использующие UDP и успешно работающие в локальной сети, будут аварийно завершаться в глобальных сетях TCP/IP.
Вернуться к началу страницы
 
+Цитировать сообщение
Jay
сообщение Aug 31 2006, 14:35
Сообщение #4


Супер постер
Иконка группы

Группа: Global moder
Сообщений: 994
Регистрация: 6.12.2005
Из: http://pauk.net.ru/
Пользователь №: 179



Цитата(LInfo @ Aug 31 2006, 13:34) *
Пример 2. Using UDP connection
Код
<?php
$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
if (!$fp) {
   echo "ERROR: $errno - $errstr<br />\n";
} else {
   fwrite($fp, "\n");
   echo fread($fp, 26);
   fclose($fp);
}
?>

всегда выполняется то что после else неважно открыт такой порт на удаленной машине или нет... все уже перепробовал...


--------------------
Software Is Like Sex, It's Better When It's Free



Вернуться к началу страницы
 
+Цитировать сообщение
LLeSS
сообщение Aug 31 2006, 14:44
Сообщение #5


N.N.G.
***

Группа: Posters
Сообщений: 292
Регистрация: 16.10.2005
Пользователь №: 103



такие наивные... .я это уже все 100 раз пробовал smile.gif)) вы че думаете... я вообще нниче непробывал. в это то и проблема

Цитата
Теперь проблема. для открытия тцп порта все нормально и правильно. Но когда и хочю проверить UDP порт. Он мне всегда выдает "OnLine"
Прочитал много мануало, читал в нете. Ничего не помогло. едиственное отличие ТЦП и УДВ это время подключеия к порты. В книгах его вообще нет.


единственный вариант как я считаю. Загнать в цикл(10-15 попыток), и если хотябы одна отлично от офф-ланйна то сервак он-дайн

Сообщение отредактировал LLeSS - Aug 31 2006, 14:46
Вернуться к началу страницы
 
+Цитировать сообщение
pavel
сообщение Aug 31 2006, 18:18
Сообщение #6


Пользователь
**

Группа: Posters
Сообщений: 116
Регистрация: 22.5.2006
Из: Чебоксары
Пользователь №: 616



Лучше проверять через определенный интервал (5 мин?) и записывать куда-нибудь, а в "Основная часть" оттуда читать...
Еще был какой-то Net_GameServerQuery в PEAR...

PS. а stream_socket_client ?

Сообщение отредактировал pavel - Aug 31 2006, 18:43
Вернуться к началу страницы
 
+Цитировать сообщение
Jay
сообщение Aug 31 2006, 19:38
Сообщение #7


Супер постер
Иконка группы

Группа: Global moder
Сообщений: 994
Регистрация: 6.12.2005
Из: http://pauk.net.ru/
Пользователь №: 179



у нас PHP 4, а это как я помню появилось только в пятой версии, ща проверю на др. компе, там 5-ая, посмотрим че полчится...


--------------------
Software Is Like Sex, It's Better When It's Free



Вернуться к началу страницы
 
+Цитировать сообщение
pavel
сообщение Aug 31 2006, 19:53
Сообщение #8


Пользователь
**

Группа: Posters
Сообщений: 116
Регистрация: 22.5.2006
Из: Чебоксары
Пользователь №: 616



Там серваки поддерживаются вплоть до такого:
Код
require_once 'Net\GameServerQuery\Protocol.php';

class Net_GameServerQuery_Protocol_Quake2 extends Net_GameServerQuery_Protocol
{

}


так что можно и поэксперементировать...
Хотя если залезть в Communicate.php, то можно понять, что чуваки приступ гениальности еще не успели словить, и попытаться сделать что-нибудь подобное но по своему

Сообщение отредактировал pavel - Aug 31 2006, 19:54
Вернуться к началу страницы
 
+Цитировать сообщение
JoNy202
сообщение Aug 31 2006, 20:35
Сообщение #9


PAUK.NET.RU TEAM
Иконка группы

Группа: Admin
Сообщений: 1,672
Регистрация: 11.7.2005
Из: Чебоксары
Пользователь №: 1



надо проверять не только соединение по определенному порту, а "общаться с сервером".


--------------------
Вернуться к началу страницы
 
+Цитировать сообщение
pavel
сообщение Aug 31 2006, 21:20
Сообщение #10


Пользователь
**

Группа: Posters
Сообщений: 116
Регистрация: 22.5.2006
Из: Чебоксары
Пользователь №: 616



Цитата(JoNy202 @ Aug 31 2006, 21:35) *
надо проверять не только соединение по определенному порту, а "общаться с сервером".


К несчастью, разработчики игр не любят, чтобы всякие левые чуваки из скритов "общались" с их серваками....

Net_GameServerQuery всякие статусы вроде возвращает для Quake3, HL2, UT3, Doom3, Battlefield, но не NFS, Warcraft или WoW. В версии с pear.net почему-то не вся поддержка, но в altavista.com можно найти... (а в гугле нельзя, гы smile.gif )

Сообщение отредактировал pavel - Aug 31 2006, 22:49
Вернуться к началу страницы
 
+Цитировать сообщение
SiMM
сообщение Sep 1 2006, 00:14
Сообщение #11


PAUK-NET.RU TEAM
Иконка группы

Группа: Admin
Сообщений: 4,715
Регистрация: 11.7.2005
Из: ЮЗР
Пользователь №: 3



Никогда не понимал чудаков, которые задают вопросы и не читают ответы.
Вернуться к началу страницы
 
+Цитировать сообщение
pavel
сообщение Sep 1 2006, 00:32
Сообщение #12


Пользователь
**

Группа: Posters
Сообщений: 116
Регистрация: 22.5.2006
Из: Чебоксары
Пользователь №: 616



честно говоря ответов типа "PHP4 forever" или "и в параллель без интеграции с апачем 5-ю версию мы поставить не можем, типа чтобы чисто по расписанию запускать и в БД записывать" я не услышал... уж извините, если нафлудил, больше не буду sad.gif
Вернуться к началу страницы
 
+Цитировать сообщение
SiMM
сообщение Sep 1 2006, 00:49
Сообщение #13


PAUK-NET.RU TEAM
Иконка группы

Группа: Admin
Сообщений: 4,715
Регистрация: 11.7.2005
Из: ЮЗР
Пользователь №: 3



Во всей теме только два попадания - пост #3 (который вообще был проигнорирован тредстартером) и пост #9. Был бы это специализированный форум - все остальные посты были бы разумно снесены в топку как абсолютно бессмысленные.
При чём ведь даже в мануале сказано
Цитата(http://php.net/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.
Но мануалы у нас даже если и читают, то дальше примеров не идут wink.gif
Вернуться к началу страницы
 
+Цитировать сообщение
pavel
сообщение Sep 1 2006, 09:56
Сообщение #14


Пользователь
**

Группа: Posters
Сообщений: 116
Регистрация: 22.5.2006
Из: Чебоксары
Пользователь №: 616



Цитата(SiMM @ Sep 1 2006, 01:49) *
мануалы у нас даже если и читают, то дальше примеров не идут


3-й - вообще не ответ и поставленной проблеммы не решает (намек на то, что это проблемма неразрешимая? но люди ж вроде как-то решали)
9-й - скорее пожелание
а из 6-го не должно было стать понятно, что для решения поставленной проблеммы используется такая-то функция, а если надо больше (типа "общение"), то используется такая-то библиотека ?
ты кстати сам-то понял че спросили? LLeSS, хотелось бы услышать твое мнение

Цитата(SiMM @ Sep 1 2006, 01:49) *
Был бы это специализированный форум - все остальные посты были бы разумно снесены в топку как абсолютно бессмысленные.
л

основания? опыт? если бы в форуме писали только ответы вроде 3-го и 9-го, то и задавать в него вопросы осбого смысла бы не было: иди сразу в мануал, там нет - иди в гугл, там нет - значит этого вообще нет и не задавай глупых вопросов

Цитата(SiMM @ Sep 1 2006, 01:49) *
мануалы у нас даже если и читают, то дальше примеров не идут


ты не по себе судишь, нет? или ты считаешь, что здесь должны только нечитающие писать (чтобы ты перед ними выделывался в стиле "прочитай здесь" или "этот вопрос от слишком буйной фантазии")
Вернуться к началу страницы
 
+Цитировать сообщение
SiMM
сообщение Sep 1 2006, 10:12
Сообщение #15


PAUK-NET.RU TEAM
Иконка группы

Группа: Admin
Сообщений: 4,715
Регистрация: 11.7.2005
Из: ЮЗР
Пользователь №: 3



Цитата(pavel @ Sep 1 2006, 10:56) *
или ты считаешь, что здесь должны только нечитающие писать (чтобы ты перед ними выделывался в стиле "прочитай здесь" или "этот вопрос от слишком буйной фантазии")
Если ты из лоботрясов - ты мне не интересен и можешь не утруждать себя вниманием ко мне wink.gif
Вернуться к началу страницы
 
+Цитировать сообщение
JoNy202
сообщение Sep 1 2006, 10:15
Сообщение #16


PAUK.NET.RU TEAM
Иконка группы

Группа: Admin
Сообщений: 1,672
Регистрация: 11.7.2005
Из: Чебоксары
Пользователь №: 1



Цитата(pavel @ Sep 1 2006, 10:56) *
3-й - вообще не ответ и поставленной проблеммы не решает (намек на то, что это проблемма неразрешимая? но люди ж вроде как-то решали)

Это намек, что нужно читать RFC протокола и RFC сервера, прежде чем их использовать.

Цитата(pavel @ Sep 1 2006, 10:56) *
9-й - скорее пожелание

Это дельный совет из личного опыта wink.gif

Цитата(pavel @ Sep 1 2006, 10:56) *
основания? опыт? если бы в форуме писали только ответы вроде 3-го и 9-го, то и задавать в него вопросы осбого смысла бы не было: иди сразу в мануал, там нет - иди в гугл, там нет - значит этого вообще нет и не задавай глупых вопросов

В сказку попал ??? smile.gif Вот мне лично лень, открывать мануал, сделать Ctrl C, потом вернуться на форум и сделать Ctrl V, тратить трафик на поиск более конкретного ответа, вот ссылку дать могу. Кому надо, тот найдет, достаточно дать правильное направление.


--------------------
Вернуться к началу страницы
 
+Цитировать сообщение
pavel
сообщение Sep 1 2006, 11:33
Сообщение #17


Пользователь
**

Группа: Posters
Сообщений: 116
Регистрация: 22.5.2006
Из: Чебоксары
Пользователь №: 616



Цитата(SiMM @ Sep 1 2006, 11:12) *
Если ты из лоботрясов - ты мне не интересен и можешь не утруждать себя вниманием ко мне wink.gif


Вспоминается старая заморская реклама правил дорожного движения, где маленькая девочка говорит "сбейте меня на скорости в 30 км/ч, и я максимум сломаю ногу, сбейте меня на скорости 90 км/ч и шансов выжить у меня будет 1 из 100". Спасибо, кстати, что ты утрудил себя вниманием ко мне.
Вернуться к началу страницы
 
+Цитировать сообщение
LLeSS
сообщение Sep 1 2006, 14:36
Сообщение #18


N.N.G.
***

Группа: Posters
Сообщений: 292
Регистрация: 16.10.2005
Пользователь №: 103



вы непоняли вопрос? я бы хотел получить в итоге работоспособный скрипт. В этом скрипте у меня работает тока 50%(TCP) из 10 попытток 1 ложная. Остальные 50% (UDP) он всегда выдает положительный ответ. и ненадо влудить. типа ты нуб иди почитай книгу, иди в гугл, иди тудато смотри тото. Если вы незнаете, нехотите то непишите. Я ни одного ответа неуслышал как мне сделать работоспособный скрипт. тока советы и цепляние к словам.
Вернуться к началу страницы
 
+Цитировать сообщение
SiMM
сообщение Sep 1 2006, 14:54
Сообщение #19


PAUK-NET.RU TEAM
Иконка группы

Группа: Admin
Сообщений: 4,715
Регистрация: 11.7.2005
Из: ЮЗР
Пользователь №: 3



Жжошь.
Я пожалуй последний раз скажу - если человек не читает ответов - отвечать ему смысла нет.
Вернуться к началу страницы
 
+Цитировать сообщение
LLeSS
сообщение Sep 1 2006, 18:23
Сообщение #20


N.N.G.
***

Группа: Posters
Сообщений: 292
Регистрация: 16.10.2005
Пользователь №: 103



Цитата(SiMM @ Sep 1 2006, 01:14) *
Никогда не понимал чудаков, которые задают вопросы и не читают ответы.

Оскорбляешь... и не говоришь конкретного ответа

Цитата(SiMM @ Sep 1 2006, 11:12) *
Если ты из лоботрясов - ты мне не интересен и можешь не утруждать себя вниманием ко мне wink.gif

опять оскорбляешь и ничего толкового

Цитата(LLeSS @ Sep 1 2006, 15:36) *
вы непоняли вопрос? я бы хотел получить в итоге работоспособный скрипт. В этом скрипте у меня работает тока 50%(TCP) из 10 попытток 1 ложная. Остальные 50% (UDP) он всегда выдает положительный ответ. и ненадо влудить. типа ты нуб иди почитай книгу, иди в гугл, иди тудато смотри тото. Если вы незнаете, нехотите то непишите. Я ни одного ответа неуслышал как мне сделать работоспособный скрипт. тока советы и цепляние к словам.

ПО русски написал


Цитата(SiMM @ Sep 1 2006, 15:54) *
Жжошь.
Я пожалуй последний раз скажу - если человек не читает ответов - отвечать ему смысла нет.

Не строй из себя крутого чувака. Молодец если знаешь. На деле помочь неможешь... помолчи
Вернуться к началу страницы
 
+Цитировать сообщение

2 страниц V   1 2 >
ОтветитьСоздать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 23rd April 2024 - 21:46