PHP Conference Japan 2024

socket_sendto

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_sendto傳送訊息到通訊端,無論其是否已連線

說明

socket_sendto(
    Socket $socket,
    字串 $data,
    整數 $length,
    整數 $flags,
    字串 $address,
    ?整數 $port = null
): 整數 (int)|false

函式 socket_sendto() 會透過 socket 通訊端,將 data 中的 length 個位元組的資料發送到位址 addressport 連接埠。

參數

socket

使用 socket_create() 建立的 Socket 類別的實例。

data

要發送的資料將會從緩衝區 data 中取得。

length

將會從 data 中發送 length 個位元組的資料。

flags

flags 的值可以是以下旗標的任意組合,使用二元 OR (|) 運算子連接。

flags 的可能值
MSG_OOB 發送 OOB(頻外)資料。
MSG_EOR 表示記錄標記。已發送的資料完成記錄。
MSG_EOF 關閉通訊端的發送端,並在已發送資料的末尾包含適當的通知。已發送的資料完成交易。
MSG_DONTROUTE 略過路由,使用直接介面。

address

遠端主機的 IP 位址。

port

port 是將發送資料的遠端連接埠號。

返回值

socket_sendto() 返回發送到遠端主機的位元組數,如果發生錯誤則返回 false

更新日誌

版本 說明
8.0.0 socket 現在是 Socket 的實例;以前,它是 資源 (resource)
8.0.0 port 現在可以為 null。

範例

範例 #1 socket_sendto() 範例

<?php
$sock
= socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

$msg = "Ping !";
$len = strlen($msg);

socket_sendto($sock, $msg, $len, 0, '127.0.0.1', 1223);
socket_close($sock);
?>

參見

新增註釋

使用者貢獻的註釋 1 則註釋

ole_DOT_omland_AT_gmail_DOT_com
19 年前
以下是如何建立 UDP 廣播的方法,有時很有用,而且似乎很難找到做法。

<?php
$sock
= socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
socket_sendto($sock, $broadcast_string, strlen($broadcast_string), 0, '255.255.255.255', $port);
?>
To Top