查詢

socket_recvmsg()函式—用法及示例

「 接收訊息 」


函式名:socket_recvmsg()

適用版本:PHP 8.0.0 及以上

用法:socket_recvmsg(resource $socket, SocketMsgFlags &$flags) : SocketMsg

引數:

  • $socket:表示一個有效的 socket 資源,用於接收訊息。
  • &$flags:一個引用引數,用於接收接收訊息時的標誌位。

返回值:

  • 返回一個 SocketMsg 物件,包含接收到的訊息的詳細資訊。

示例:

// 建立一個 TCP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "socket_create() 失敗: " . socket_strerror(socket_last_error()) . "\n";
    exit;
}

// 繫結 socket 到 IP 地址和埠
if (socket_bind($socket, '127.0.0.1', 8080) === false) {
    echo "socket_bind() 失敗: " . socket_strerror(socket_last_error($socket)) . "\n";
    exit;
}

// 監聽連線
if (socket_listen($socket, 5) === false) {
    echo "socket_listen() 失敗: " . socket_strerror(socket_last_error($socket)) . "\n";
    exit;
}

// 接受客戶端連線
$clientSocket = socket_accept($socket);
if ($clientSocket === false) {
    echo "socket_accept() 失敗: " . socket_strerror(socket_last_error($socket)) . "\n";
    exit;
}

// 接收訊息
$flags = MSG_WAITALL;
$message = socket_recvmsg($clientSocket, $flags);

if ($message === false) {
    echo "socket_recvmsg() 失敗: " . socket_strerror(socket_last_error($clientSocket)) . "\n";
    exit;
}

// 列印接收到的訊息
echo "接收到的訊息:\n";
var_dump($message);

// 關閉 socket 連線
socket_close($clientSocket);
socket_close($socket);

說明:

  • 在示例中,首先建立了一個 TCP socket,並將其繫結到本地 IP 地址和埠。
  • 然後透過 socket_listen() 函式監聽連線請求,並透過 socket_accept() 函式接受客戶端連線,得到一個新的 socket 資源 $clientSocket。
  • 最後,透過呼叫 socket_recvmsg() 函式接收客戶端傳送的訊息,並將訊息儲存在 $message 變數中。
  • 最後,我們列印出接收到的訊息,並關閉 socket 連線。

請注意,此示例僅演示了 socket_recvmsg() 函式的基本用法,實際使用時可能需要根據具體需求進行適當的修改和錯誤處理。

補充糾錯
上一個函式: socket_getpeername()函式
下一個函式: socket_getopt()函式
熱門PHP函式
分享連結