查詢

socket_sendmsg()函式—用法及示例

「 透過套接字傳送訊息 」


函式名稱:socket_sendmsg()

適用版本:PHP 7.2.0及以上

函式描述:socket_sendmsg()函式用於透過套接字傳送訊息。

語法:bool socket_sendmsg(resource $socket, array $message, int $flags = 0)

引數:

  • $socket:套接字資源,由socket_create()函式建立。
  • $message:包含訊息的陣列,包括以下鍵名:
    • 'iov':包含訊息資料的陣列,每個元素是一個字串。
    • 'control':包含控制資訊的陣列,每個元素是一個字串。
    • 'flags':指定訊息的標誌位。
  • $flags:可選引數,用於指定傳送訊息的標誌位,預設為0。

返回值:成功時返回true,失敗時返回false。

示例:

// 建立套接字
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

// 連線到伺服器
$connect = socket_connect($socket, '127.0.0.1', 8080);
if ($connect === false) {
    echo "連線失敗:" . socket_strerror(socket_last_error($socket));
    exit;
}

// 構建訊息陣列
$message = [
    'iov' => ['Hello, Server!'],
    'control' => [],
    'flags' => 0,
];

// 傳送訊息
if (socket_sendmsg($socket, $message, 0) === false) {
    echo "傳送訊息失敗:" . socket_strerror(socket_last_error($socket));
} else {
    echo "訊息傳送成功!";
}

// 關閉套接字
socket_close($socket);

注意事項:

  • 在使用socket_sendmsg()函式之前,需要先建立套接字並連線到伺服器。
  • 引數$message是一個關聯陣列,其中'iov'鍵對應的值是一個包含訊息資料的陣列,可以包含多個元素,每個元素是一個字串,表示一條訊息。
  • 引數$message中的'control'鍵對應的值是一個包含控制資訊的陣列,每個元素也是一個字串,表示一條控制資訊。
  • 引數$flags可以用來設定訊息的標誌位,例如設定為MSG_DONTWAIT可以將傳送操作設定為非阻塞模式。
  • 當函式返回false時,可以使用socket_strerror()函式獲取具體的錯誤資訊。
補充糾錯
上一個函式: socket_sendto()函式
下一個函式: socket_send()函式
熱門PHP函式
分享連結