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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP опрос UDP порта, локальные сети 
:(
    Опции темы
VoAnt
  Дата 21.11.2004, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.4.2004
Где: Украина г. Киев

Репутация: -1
Всего: 2



Профи вопрос к ВАМ!

Ситуация:

в сеть подключено 4 компьютера
на каждом из них периодически запускается игровой сервер ... нууу например StarCraft-а

Старик использует 6111 и 6112 порты по UDP


Вопрос:

Каким образом с помощью PHP подключиться к UDP портам ( 6111 или 6112 )
и получить от них какой-то ответ однозначно идентифицирующий сервис, который их открыл? smile

Грабли: smile

Я пробовал подключаться так:
Код

<?
$this_ping = fsockopen('udp//192.168.0.107' , 6111, $errno, $errstr);  
if(!$this_ping) {echo "OFF";} else {
echo "ON";
}
fclose($this_ping);
unset($this_ping);
?>

но не зависимо от того запущен ли StarCraft - сервер, появляется всегда "ОК"

Я думаю это потому, что UDP не требует подтверждения получения пакета. Поэтому нужно не просто подключатся а опрашивать порт. КАК ЭТО ДЕЛАТЬ???


жду ответов спасибо ...
PM MAIL ICQ   Вверх
penizillin
Дата 21.11.2004, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код
'udp//192.168.0.107'


опечатка?

Это сообщение отредактировал(а) penizillin - 21.11.2004, 18:21
PM MAIL ICQ   Вверх
Chuck
Дата 21.11.2004, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

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



C http://www.php.net/fsockopen ....
Example 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);
}
?>

Думаю, разберешься!
PM MAIL WWW GTalk   Вверх
penizillin
Дата 21.11.2004, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



да нет, соединяется он правильно. просто в случае соединения к udp порту случая (!fp) у него не будет.

нужно знать протокол игры, чтобы знать, что послать на порт, и как разобрать ответ. для этого google.com хватит.
PM MAIL ICQ   Вверх
VoAnt
Дата 29.11.2004, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.4.2004
Где: Украина г. Киев

Репутация: -1
Всего: 2



ДА .. там в моём коде Очепятка smile))


.... кстати я пробовал этот код

Код

<?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);
}
?>


------- ВИСНЕТ НАГЛУХО!!! smile))

если fread($fp, 1); пишет всё ок, если > 1 .. наглухо!

А что собстно искать в гугле??? ну хоть пример запроса подскажите плз
PM MAIL ICQ   Вверх
VoAnt
Дата 29.11.2004, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.4.2004
Где: Украина г. Киев

Репутация: -1
Всего: 2



Еще хотел спросить..

Есть ли програмки какими можно перехватить сообщение от клиента (игрового)

т.е. StarCraft клиент ведь что-то посылает StarCraft серверу и получает ответ?

КАК ЭТО ЧТО-ТО ПЕРЕХВАТИТЬ?
PM MAIL ICQ   Вверх
penizillin
Дата 29.11.2004, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



конечно виснет, данных ждет.

перехватить траффик можно любым сниффером, который этот порт слушает. только разобраться в бинарных данных без спецификации протокола, наверное, не получится.

а поискать в гугле можно, например, open-source утилитки, которые умеют общаться с серверами sc. в них можно запросы подглядеть.
PM MAIL ICQ   Вверх
IZ@TOP
Дата 29.11.2004, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

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



VoAnt, а что если fgets попробовать?

PS На последний вопрос могу сказать только то что существует множество программ которые перехватывают траффик посылаемый от одного компьютера к другому (называются они sniffer'ами... вроде так). Google or Yandex тебе помогут.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
VoAnt
Дата 29.11.2004, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.4.2004
Где: Украина г. Киев

Репутация: -1
Всего: 2



Да спасибо... снифер скачал... smile Но как и говорилось без спецификаци .. smile прям как на смайлике со стеной smile

Если кому не лень помочь в поиске таких "спецификаций" например для SC, CS, ... прошу помочь!

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

VoAnt smile
Добавлено @ 17:33
ДАВАЙТЕ ИСКАТЬ ВМЕСТЕ
PM MAIL ICQ   Вверх
@tom
Дата 11.6.2005, 14:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











люди, ну чё ? чтонить у вас получилось ? просто у мя щас такаяже трабла smile

если есть у когонить код - поделитесь плиз ;)

я правда ламер в этом деле, но вот такая идея.... а что если отправить запрос и просто вывести результат по тому, получен ли ответ или нет ( тоесть по факту ответа, и ненадо его расшифровывать...) ?? smile


  Вверх
Eugene Glova
Дата 28.10.2005, 13:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











<?php

$server = "192.168.1.1";

$fp = fsockopen("udp://".$server, 27015, $err1, $err2, 1);

if ($fp){
$string = "infostring"; // "info", "infostring", "details", "players" and "rules"
fputs($fp, chr(255).chr(255).chr(255).chr(255).$string);
socket_set_timeout($fp,1,0);
echo fgets($fp);

}else{
echo "No connection to server";
}

  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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