3

PHPで作成された1つのソケットを介して、複数のメッセージ(各メッセージは動的に作成されます)をデバイスに書き込む必要があります。最初のメッセージは常に通過します。ただし、後続のメッセージは通過しません。デバッグに役立てるために、この例に問題があるかどうかをお知らせください。

        $socket= socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        socket_connect($socket, $ip, $port); 
        socket_write($socket, "message 1\r");
        socket_write($socket, "message 2\r");
4

1 に答える 1

3

socket_write($socket, "message 1\r\n");メッセージの最後にキャリッジリターンを追加してみましたか?多くの場合、バッファとストリームを操作するときは、それでうまくいくようです。

ショットを与える価値のある他の何か:

//all suggestions rolled into one (including Chris' chr(0) - thanks for that one)
socket_write($socket, 'message 1'."\r\n".chr(0));
usleep(5);
socket_write($socket, 'Foobar'."\r\n".chr(0));

バッファをクリアするために少し余分な時間を与えるだけで、驚異的なことができます。

編集

別の脳波がありました:オプションの長さパラメーターも使用してみましたか?

socket_write($socket, 'message 1'."\r\n".chr(0),strlen('message 1'."\r\n".chr(0)));
于 2012-05-11T21:26:22.487 に答える