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.SU

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


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

> Без описания
Aven
Отправлено: 31 Июля, 2017 - 14:19:33
Post Id


Новичок


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


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




Всем привет!

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

Задача весьма проста:
Есть сервис, который слушает 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);
 
 Top
LIME
Отправлено: 31 Июля, 2017 - 20:21:52
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




PHP:
скопировать код в буфер обмена
  1. socket_write($socket_client, DISCOVERY_RESPONSE);
  2. socket_close($socket_client);
а разве ты не закрываешь сокет сразу после записи не дождавшись ответа?
 
 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