Как записать байт байтом для снабжения сокетом в PHP?

Как записать байт байтом для снабжения сокетом в PHP?

Например, как может я делать что-то как:

socket_write($socket,$msg.14.56.255.11.7.89.152,strlen($msg)+7);

Псевдо код конкатенировал, цифры являются на самом деле байтами в декабре. Надежда Вы понимаете меня.

5
задан PatlaDJ 18 March 2010 в 20:39
поделиться

3 ответа

Вы можете использовать функцию pack , чтобы упаковать данные в любой желаемый тип данных. Затем отправьте его с помощью любой из функций сокета .

$strLen = strlen($msg);

$packet = pack("a{$strLen}C7", $msg, 14, 56, 255, 11, 7, 89, 152);

$pckLen = strlen($packet);

socket_write($socket, $packet, $pckLen);
6
ответ дан 14 December 2019 в 08:47
поделиться

До PHP 6 байты были просто символами. Запись строки - это то же самое, что и запись массива байтов. Если это десятичные значения символов ascii, вы можете заменить бит $ msg ... на:

$msg.chr(14).chr(56).chr(255).chr(11).chr(7).chr(89).chr(152)

Если бы вы могли объяснить, что вы пытаетесь сделать, нам будет легче дать более полезный ответ, но в Между тем, это завершает то, что вы описали до сих пор.

0
ответ дан 14 December 2019 в 08:47
поделиться

Согласно http://www.php.net/manual/en/function.socket-create.php#90573

Вы должны уметь делать

socket_write($socket,"$msg\x14\x56\x255\x11\x7\x89\x152",strlen($msg)+7);
1
ответ дан 14 December 2019 в 08:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: