1

我正在寻找一个 php 脚本,该脚本将使用二进制协议连接到服务器,发送查询并从中接收数据。我想知道如何在 php 中实现它?到目前为止,我有:

<?php
$fp = fsockopen("111.111.10.10", "2222", $errno, $errstr, 10);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    fwrite($fp, "You message");
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>

当我说二进制时,我不是指计算机语言的底层,我是指发送到服务器的特定字符串应该转换为“0101001”,因为这是服务器读取和转换信息的方式。我需要一种将 php 字符串转换为这种格式并重新转换回来的方法。

如果你不完全理解这个问题,我会解释。

4

3 回答 3

3

要从字符串创建二进制字符串,您需要几个步骤。首先将所有字符更改为数字ord(),然后将数字转换为十进制decbin。我也曾经str_pad让它每个字符有 8 位。

我添加了一个间隔以提高可读性

<?php
$str = 'Hello world';
$l = strlen($str);
$result = '';
while ($l--) {
    $result = str_pad(decbin(ord($str[$l])), 8, "0", STR_PAD_LEFT) . ' - ' . $result;
}
print $result;

//01001000 - 01100101 - 01101100 - 01101100 - 01101111 - 00100000 - 01110111 - 01101111 - 01110010 - 01101100 - 01100100
?>
于 2013-01-03T14:30:54.907 回答
1

使用packunpack转换为/从二进制

于 2013-01-03T14:22:13.687 回答
0

它们已经采用二进制表示。通过将它们传输到服务器fwrite就足够了。

套接字的另一端将接收二进制字符串并按原样处理它。

于 2013-01-03T14:21:51.143 回答