PHP Conference Japan 2024

socket_getsockname

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

socket_getsockname查询给定套接字的本地端,这可能会导致主机/端口或 Unix 文件系统路径,具体取决于其类型

描述

socket_getsockname(Socket $socket, string &$address, int &$port = null): bool

注意: socket_getsockname() 不应与使用 AF_UNIX 套接字创建的 socket_connect() 一起使用。只有使用 socket_accept() 或在调用 socket_bind() 后创建的主服务器套接字才能返回有意义的值。

参数

socket

使用 socket_create()socket_accept() 创建的 Socket 实例。

address

如果给定的套接字类型为 AF_INETAF_INET6,则 socket_getsockname() 将在 address 参数中返回适当表示法(例如 127.0.0.1fe80::1)中的本地 *IP 地址*,并且,如果存在可选的 port 参数,则还会返回关联的端口。

如果给定的套接字类型为 AF_UNIX,则 socket_getsockname() 将在 address 参数中返回 Unix 文件系统路径(例如 /var/run/daemon.sock)。

port

如果提供,则它将保存关联的端口。

返回值

成功时返回 true,失败时返回 false。如果套接字类型不是 AF_INETAF_INET6AF_UNIX 中的任何一个,则 socket_getsockname() 也可能返回 false,在这种情况下,*不会*更新最后一个套接字错误代码。

变更日志

版本 描述
8.0.0 socket 现在是一个 Socket 实例;以前,它是一个 resource

参见

添加注释

用户贡献的笔记 1 个笔记

CXJ
10 年前
奇怪的是,如果在创建后调用 socket_bind() 来命名以前匿名的套接字,则 getsockname() 适用于 socket_create() 和 socket_create_pair() Unix 域 (AF_UNIX) 套接字。

使用 socket_bind() 调用也会导致创建文件系统“文件”(套接字,在“ls -l”列表中第一个字符为“s”)。此类“文件”需要显式删除,因为关闭套接字不会删除它。
To Top