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
Форумы портала PHP.SU :: Версия для печати :: Не могу получить UDP пакет
Форумы портала PHP.SU » » Работа с сетью » Не могу получить UDP пакет

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

1. Aven - 31 Июля, 2017 - 14:19:33 - перейти к сообщению
Всем привет!

Уже несколько дней бьюсь над казалось бы простейшей задачей, но никак не выходит.

Задача весьма проста:
Есть сервис, который слушает Multicast адрес и при отправке запроса на него, отвечает запросившему ответ по тому адресу и тому порту с которого пришел ответ.

Трафик анализирую с помощью Wireshark. Видно, что запрос ушел и что пришел ответ на правильный адрес порт, который открыт.

Но код не может считать ни байта, ошибок не выдает... в чем может быть проблема? Уже пробовал на потоках, все тоже самое...

PHP:
скопировать код в буфер обмена
  1. $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)
  2. socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)
  3. socket_bind($socket, '172.16.1.10', 25232)
  4.  
  5. // Отправляем запрос
  6. $socket_client = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
  7. socket_set_option($socket_client, SOL_SOCKET, SO_REUSEADDR, 1);
  8. socket_bind($socket_client, '172.16.1.10', 25232);
  9. socket_connect($socket_client, '239.255.255.250', 1982);
  10. socket_write($socket_client, DISCOVERY_RESPONSE);
  11. socket_close($socket_client);
  12.  
  13. // Читаем ответ
  14.  
  15.  
  16. for ($i=0;$i<5;$i++) {
  17.   socket_recvfrom($socket,$data,150,0,$clientip,$clientport);
  18.  
  19.   $data_len = strlen($data);
  20.   echo 'data_len=' . $data_len;
  21.   sleep(1);
  22. }
  23.  
  24. socket_close($socket);
2. LIME - 31 Июля, 2017 - 20:21:52 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. socket_write($socket_client, DISCOVERY_RESPONSE);
  2. socket_close($socket_client);
а разве ты не закрываешь сокет сразу после записи не дождавшись ответа?

 

Powered by ExBB FM 1.0 RC1