Как записать побайтно в сокет в PHP? - PullRequest
5 голосов
/ 18 марта 2010

Как записать побайтно в сокет в PHP?

Например, как я могу сделать что-то вроде:

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

Конкатенированные цифры псевдокода на самом деле являются байтами в dec. Надеюсь, ты меня понимаешь.

Ответы [ 3 ]

6 голосов
/ 19 марта 2010

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

$strLen = strlen($msg);

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

$pckLen = strlen($packet);

socket_write($socket, $packet, $pckLen);
1 голос
/ 19 марта 2010

Согласно 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);
0 голосов
/ 18 марта 2010

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

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

Если вы сможете объяснить, что вы пытаетесь сделать, нам будет проще предоставить более подробную информацию.полезный ответ, но пока он завершает то, что вы описали до сих пор.

...