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()を decimal に変換しますdecbin。またstr_pad、1文字あたり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 に答える