PHP.SU

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

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

> Найдено сообщений: 2
Aven Отправлено: 16 Марта, 2018 - 12:35:37 • Тема: Собрать float • Форум: Вопросы новичков

Ответов: 0
Просмотров: 174
Всем привет!

Необходимо собрать 32-х битный float из 4 байтов массива.
На js это делается так:

CODE (javascript):
скопировать код в буфер обмена
  1. const buf = Buffer.from([1, 2, 3, 4]);
  2. // Prints: 1.539989614439558e-36
  3. console.log(buf.readFloatLE());


Получилось разбить float на байты, но как произвести обратную операцию?

PHP:
скопировать код в буфер обмена
  1. $f = 1.539989614439558e-36;
  2. $ar = unpack("c*", pack("f", $f));
  3. print_r($ar); // return Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 )
Aven Отправлено: 31 Июля, 2017 - 14:19:33 • Тема: Не могу получить UDP пакет • Форум: Работа с сетью

Ответов: 1
Просмотров: 2035
Всем привет!

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

Задача весьма проста:
Есть сервис, который слушает 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);

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB