Преобразование кода C # в PHP: создание пустого байтового массива php и отправка с использованием сокета - PullRequest
0 голосов
/ 15 мая 2018
//how to initialize byte[10240] in php  
var svr = new TcpClient();
svr.Connect(127.0.0.1, 8081);
var ns = svr.GetStream();
var outputBuffer = new byte[10240];
var pkgLen = 11
ns.Write(outputBuffer, 0, pkgLen);

У меня есть код C # выше, и я пытаюсь преобразовать код в PHP. Вот мой код в php:

<?php    
/* Create a TCP/IP socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

$message = //empty array of byte    
socket_send($socket, $message);

socket_close($socket)
?>

Мой вопрос: как создать пустой массив байтов длиной 10240 в php? Также функция socket_send принимает строку, а не массив.

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Какой протокол требует, чтобы вы записали 10240 нулевых байтов?

В любом случае, перегрузка Write(), которую вы вызываете, записывает только первые 11 (pkgLen) байтов этого массива. Итак, вам нужно написать 11 нулей.

Вы можете сделать это жестко:

$message = "\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0";
0 голосов
/ 15 мая 2018

Вам нужно сгенерировать строку с нулевым байтом в ней, а затем вам нужно существенно ее умножить.

$zero = chr(0);
$message = str_repeat($zero, 10240);

Вы также можете использовать str_pad:

$message = str_pad('', 10240, chr(0));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...