如何在 php 套接字上发送 OOB 数据


How to send OOB data on php socket

我需要发送和接收 OOB 数据。

   do {
        $result = socket_write($rsServ, $sData, $BUFFER_SIZE);
        if (rand(0, 1)){
            $resultOOB = socket_send($rsServ, "!", 1, MSG_OOB);
            echo "Send OOB data'n";
        }
        if ($result === false) {
            $errormsg = socket_strerror(socket_last_error());
            echo $errormsg."'n";
        }
    }
    while ($result);

接收数据:

    do {
        if (socket_recv($rsSock, $tmp, 1, MSG_OOB)){
            echo "Receiving OOB data'n";
        }
        $result = socket_read($rsSock, $BUFFER_SIZE);
    } while ($result);

但是 php 给我写警告消息:PHP 警告: socket_recv(): 无法从套接字读取 [22]: 第 84 行/home/andrey/Project/050502_shlapkov/main.php 中的参数无效

如何在php中定义带外数据?

你可以试试这个:

socket_recv($rsSock, $tmp, 1, 0) 

而不是

socket_recv($rsSock, $tmp, 1, MSG_OOB)

第 4 个参数是 int,但MSG_OOB您以前无法定义的参数。