|
|
|
| Всем доброе время, суток.
Вопрос, можно предать массив через сокет, и принять его как массив?
Передача строки через сокет, неподходит, надо именно массив.
Допустим
$address="192.168.0.112";
$port=1001;
$timeout=5;
$sock=fsockopen($address, $port, $errno, $errstr, $timeout);
fputs($sock, $massiv);
где $massiv=array(0,0,23,255,81,3,23,0,0,32); а не строка "0 0 23 225 81 3 23 0 0 32";
и принять
$mas=fgets($sock,2048)
где $mas - тоже массив, как и $massiv и можно обращаться к любому элементу $mas[1], $mas[2], $mas[3]. | |
|
|
|
|
|
|
|
для: yello
(22.10.2009 в 21:18)
| | а serialize не подойдет? | |
|
|
|
|
|
|
|
для: Волки
(22.10.2009 в 21:24)
| | а в двух словах можно, что это такое или ссылку? | |
|
|
|
|
|
|
|
для: yello
(22.10.2009 в 21:26)
| | http://ru2.php.net/manual/en/function.serialize.php
функция преобразует массив (да и любой объект тоже) любой сложности в строку.
есть и обратная функция, см мануал. | |
|
|
|
|
|
|
|
для: yello
(22.10.2009 в 21:18)
| | Ответ на вопрос в общем случае определяется протоколом обмена и форматом данных, который ожидает и который поставляет сервер, слушающий этот сокет (192.168.0.112:1001)
php-массив в чистом виде определен лишь в терминах php внутри него. | |
|
|
|
|
|
|
|
для: Trianon
(22.10.2009 в 23:02)
| | протокол передачи TCP
принимается на той стороне массив байт, и мне тоже будет отправлен массив байт
Мне бы array(1,0,1,23,15) - обьявить как массив байт, размер каждой ячейки 1 байт, передаваться в каждой ячейки будут только числа, от 0 до 255, и чтобы $fputs($sock,$x) - принимающая сторона приняла как массив байт,
<?php
$address="192.168.0.112";
$port=1001;
$timeout=5;
$sock=fsockopen($address, $port, $errno, $errstr, $timeout);
$massiv=array(1,0,1,23,15);
$x=serialize($massiv);
echo $x;
// a:5:{i:0;i:1;i:1;i:0;i:2;i:1;i:3;i:23;i:4;i:15;}
fputs($sock, $x);
$mas=fgets($sock,2048)
$y=unserialize($mas);
echo "$y[0] $y[1] $y[2] $y[3] $y[4]";
// 1 0 1 23 15
?> | |
|
|
|
|
|
|
|
для: yello
(23.10.2009 в 09:49)
| | Для такого дела придуманы функции pack и unpack .
Их основная задача - преобразовывать внутреннее представление данных во внешнее и наоборот. | |
|
|
|