Jak psát byte byte do zásuvky v PHP?

hlasů
4

Jak psát byte byte do zásuvky v PHP?

Například, jak mohu udělat něco jako:

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

Pseudo kód zřetězené číslice jsou vlastně byty v prosinci. Doufám, že mi rozumíš.

Položena 18/03/2010 v 21:39
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
0

Před PHP 6, byty jsou jen znaky. Psaní řetězec out je totéž jako psaní pole bajtů. Jsou-li tyto hodnoty ascii znak desetinná můžete nahradit $ MSG ... bit s:

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

Pokud byste mohli vysvětlit, co se snaží dělat, že to bude pro nás snazší zajistit větší užitečnou odpověď, ale do té doby, že dosáhne toho, co jste dosud popsáno.

Odpovězeno 18/03/2010 v 21:59
zdroj uživatelem

hlasů
1

Podle http://www.php.net/manual/en/function.socket-create.php#90573

Byste měli být schopni dělat

socket_write($socket,"$msg\x14\x56\x255\x11\x7\x89\x152",strlen($msg)+7);
Odpovězeno 18/03/2010 v 22:04
zdroj uživatelem

hlasů
5

Můžete použít pack funkci balit data do jakéhokoliv datového typu, který si přejete. Odeslat jej s některou z zásuvkových funkcí.

$strLen = strlen($msg);

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

$pckLen = strlen($packet);

socket_write($socket, $packet, $pckLen);
Odpovězeno 18/03/2010 v 22:25
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more