查詢

socket_write()函式—用法及示例

「 向一個開啟的socket寫入資料 」


函式名稱:socket_write()

適用版本:PHP 4, PHP 5, PHP 7

用法:socket_write(resource $socket, string $buffer, int $length): int|false

說明:socket_write() 函式用於向一個開啟的socket寫入資料。它可以用於傳送資料到伺服器或其他網路裝置。

引數:

  • $socket:必需,表示一個有效的socket資源,可以透過socket_create()或socket_accept()函式獲取。
  • $buffer:必需,表示要傳送的資料。可以是字串或二進位制資料。
  • $length:必需,表示要傳送的資料長度。如果未指定,則預設傳送整個資料。

返回值:

  • 如果成功傳送資料,則返回傳送的位元組數(可能小於指定的$length)。
  • 如果發生錯誤,則返回false。

示例:

// 建立一個TCP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    // 處理建立socket失敗的情況
    die("Failed to create socket: " . socket_strerror(socket_last_error()));
}

// 連線到伺服器
$result = socket_connect($socket, '127.0.0.1', 8080);
if ($result === false) {
    // 處理連線失敗的情況
    die("Failed to connect: " . socket_strerror(socket_last_error($socket)));
}

// 要傳送的資料
$data = "Hello, server!";

// 傳送資料
$bytesSent = socket_write($socket, $data, strlen($data));
if ($bytesSent === false) {
    // 處理傳送失敗的情況
    die("Failed to send data: " . socket_strerror(socket_last_error($socket)));
}

echo "Sent $bytesSent bytes of data to server.";

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

在上面的示例中,我們首先建立了一個TCP socket,然後使用socket_connect()函式連線到伺服器。然後,我們定義了要傳送的資料,並使用socket_write()函式將資料傳送到伺服器。最後,我們關閉了socket連線。

請注意,socket_write()函式可能不會一次性傳送所有資料。因此,我們需要根據返回的位元組數來確定實際傳送的資料量。如果傳送失敗,則可以使用socket_strerror()函式獲取錯誤訊息。

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