Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Принять данные по UDP с помощью PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Alt.F4
Отправлено: 25 Апреля, 2011 - 21:06:25
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Добрый день.
Есть ли возможность принять некоторые переменные с помощью PHP пришедшие на сервер по UDP протоколу?
Т.е. по TCP (вернее по HTTP) принимаем/передаем, например, GET'ом, а вот как сделать подобное, но по UDP.
Спасибо.
З.Ы. передающая сторона - GPRS модем.

(Отредактировано автором: 25 Апреля, 2011 - 21:11:14)

 
 Top
Мелкий Супермодератор
Отправлено: 25 Апреля, 2011 - 21:25:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




http://ru.php.net/manual/en/func...ocket-create.php и компания.
И http://ru.php.net/manual/en/book.stream.php посмотрите, не помню, умеет ли он UDP или только TCP.


-----
PostgreSQL DBA
 
 Top
Alt.F4
Отправлено: 25 Апреля, 2011 - 21:41:16
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




socket и компания просит айпи для соединения по UDP. Это исключено, у GPRS модема динамический айпи, а использовать dyndns нет возможности.
По streams ничего не нашел...
 
 Top
Haron
Отправлено: 26 Апреля, 2011 - 04:23:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010  
Откуда: Оттуда


Помог: 5 раз(а)




Ну во-первых - у Вас не динамический IP, а NAT - ибо модем GPRS.
Во вторых на роутере провайдера - должен быть проброшен порт, для приёма UDP-пакетов. UDP инкапсулирован в IP, и необходимость доступного порта никто не отменял.

Так что с GPRS-модемом - забейте и не парьтесь.
(Добавление)
Мда, и ещё, покурите про протокол UDP на википедии, ибо "использование UDP для обхода ограничений провайдера" - не более чем миф.

(Отредактировано автором: 26 Апреля, 2011 - 04:25:32)



-----
И чё?
 
 Top
Alt.F4
Отправлено: 30 Апреля, 2011 - 12:32:45
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Цитата:
на роутере провайдера - должен быть проброшен порт, для приёма UDP-пакетов.
Так ведь мне передавать надо с GPRS-модема, а не принимать.

Что-то никак не выходит запустить соккет UDP на PHP.
Или не те порты использую. У хостера открыто мало, но в принципе какая разница если толкать все в 80?
Пример взял отсюда http://ua.php.net/manual/en/func...ocket-server.php .
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $socket = stream_socket_server("udp://'IP_сервера':80", $errno, $errstr, STREAM_SERVER_BIND);
  3. if (!$socket) {
  4.    die("$errstr ($errno)");
  5. }
  6.  
  7. do {
  8.    $pkt = stream_socket_recvfrom($socket, 1, 0, $peer);
  9.    echo "$peer\n";
  10.    stream_socket_sendto($socket, date("D M j H:i:s Y\r\n"), 0, $peer);
  11. } while ($pkt !== false);
  12.  
  13. //Затем $pkt сохраняю в БД
  14. ?>
  15.  
Пробую передавать через терминалку "Hercules" (поддерживает UDP соединение) http://www[dot]hw-group[dot]com/products[dot][dot][dot]es/index_en[dot]html
Но в результате ничего в БД не появляется...
Подскажите пожалуйста, где ошибка.
Спасибо.
 
 Top
Мелкий Супермодератор
Отправлено: 30 Апреля, 2011 - 14:43:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Alt.F4 пишет:
Так ведь мне передавать надо с GPRS-модема, а не принимать.

Alt.F4 пишет:
Есть ли возможность принять некоторые переменные с помощью PHP пришедшие на сервер по UDP протоколу?

Вы себе противоречите. Вероятно, не понимаете принципов сетевой передачи данных.
Варианта 2:
0) скрипт инициирует подключение куда-то:
достаточно знать только протокол (TCP | UDP), IP и порт машины, с которой надо соединиться. (ну и чтобы файрволы по пути не резали)
1) к скрипту будут подключаться:
обязателен открытый маршрут до скрипта (если требуется подключаться через интернет - публичный IP или проброшенный с маршрутизатора(ов) порт)

Alt.F4 пишет:
какая разница если толкать все в 80?

Огромная. Есть UDP порт 80 и есть TCP порт 80, они не пересекаются. И файрволл их может блокировать независимо друг от друга.

(Отредактировано автором: 30 Апреля, 2011 - 14:44:40)



-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB