`socket_getpeername` 無法用於 UDP 通訊端。請改用 `socket_recvfrom` - 它會提供來源伺服器的 IP 位址和連接埠 - 例如:
$size = socket_recvfrom($socket, $input, 65535, 0, $ipaddress, $port);
echo "從 IP $ipaddress 連接埠 $port 收到 [$input] ($size 位元組)\n";
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_getpeername — 查詢指定 socket 的遠端資訊
查詢指定 socket 的遠端資訊,根據 socket 的類型,結果可能為主機/埠或 Unix 檔案系統路徑。
socket
使用 socket_create() 或 socket_accept() 建立的 Socket 實例。
address
如果指定的 socket 類型為 AF_INET
或 AF_INET6
,socket_getpeername() 會將對端(遠端)的 *IP 地址* 以適當的表示法(例如 127.0.0.1
或 fe80::1
)返回到 address
參數中,並且如果提供了可選的 port
參數,也會返回關聯的連接埠。
如果指定的 socket 類型為 AF_UNIX
,socket_getpeername() 會將 Unix 檔案系統路徑(例如 /var/run/daemon.sock
)返回到 address
參數中。
port(連接埠)
如果提供此參數,它將儲存與 address
相關聯的連接埠。
成功時返回 true
,失敗時返回 false
。socket_getpeername() 也可能在 socket 類型不是 AF_INET
、AF_INET6
或 AF_UNIX
的任何一種時返回 false
,在這種情況下,最後一個 socket 錯誤碼*不會*被更新。
注意:
socket_getpeername() 不應與使用 socket_accept() 建立的
AF_UNIX
sockets 一起使用。只有使用 socket_connect() 建立的 sockets 或在呼叫 socket_bind() 之後的主要伺服器 socket 才會返回有意義的值。
注意:
要讓 socket_getpeername() 返回有意義的值,套用它的 socket 當然必須是具有「對端」概念的 socket。
`socket_getpeername` 無法用於 UDP 通訊端。請改用 `socket_recvfrom` - 它會提供來源伺服器的 IP 位址和連接埠 - 例如:
$size = socket_recvfrom($socket, $input, 65535, 0, $ipaddress, $port);
echo "從 IP $ipaddress 連接埠 $port 收到 [$input] ($size 位元組)\n";