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 — 查询给定套接字的远程端
查询给定套接字的远程端,这可能会导致主机/端口或 Unix 文件系统路径,具体取决于其类型。
socket
使用 socket_create() 或 socket_accept() 创建的 Socket 实例。
address
如果给定的套接字类型为 AF_INET
或 AF_INET6
,socket_getpeername() 将以适当的表示法(例如 127.0.0.1
或 fe80::1
)在 address
参数中返回对等方(远程)的 *IP 地址*,并且如果提供了可选的 port
参数,还会返回关联的端口。
如果给定的套接字类型为 AF_UNIX
,socket_getpeername() 将在 address
参数中返回 Unix 文件系统路径(例如 /var/run/daemon.sock
)。
port
如果给出,这将保存与 address
关联的端口。
成功时返回 true
,失败时返回 false
。 如果套接字类型不是 AF_INET
、AF_INET6
或 AF_UNIX
中的任何一个,socket_getpeername() 也可能返回 false
,在这种情况下,不会更新最后一个套接字错误代码。
注意:
对于使用 socket_accept() 创建的
AF_UNIX
套接字,不应使用 socket_getpeername()。 只有使用 socket_connect() 创建的套接字或在调用 socket_bind() 后的主服务器套接字将返回有意义的值。
注意:
要使 socket_getpeername() 返回有意义的值,它所应用的套接字必须是“对等方”概念有意义的套接字。
socket_getpeername 不适用于 UDP 套接字。 相反,使用 socket_recvfrom - 它提供了源服务器的 IP 地址和端口 - 例如
$size=socket_recvfrom($socket,$input,65535,0,$ipaddress,$port);
echo "从 IP $ipaddress 端口 $port 接收 [$input] ($size 字节)\n";