PHP Conference Japan 2024

socket_listen

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

socket_listen在套接字上监听连接

描述

socket_listen(Socket $socket, int $backlog = 0): bool

在使用 socket_create() 创建套接字 socket 并使用 socket_bind()将其绑定到名称后,可以指示它在 socket 上监听传入的连接。

socket_listen() 仅适用于类型为 SOCK_STREAMSOCK_SEQPACKET 的套接字。

参数

socket

使用 socket_create()socket_addrinfo_bind() 创建的 Socket 实例

backlog

最多 backlog 个传入连接将排队等待处理。如果连接请求到达时队列已满,客户端可能会收到错误,并显示 ECONNREFUSED 的指示,或者,如果底层协议支持重传,则请求可能会被忽略,以便重试能够成功。

注意:

传递给 backlog 参数的最大值在很大程度上取决于底层平台。在 Linux 上,它会被静默截断为 SOMAXCONN。在 win32 上,如果传递 SOMAXCONN,则负责套接字的底层服务提供商会将 backlog 设置为最大“合理”值。在这个平台上,没有标准的规定来确定实际的 backlog 值。

返回值

成功时返回 true,失败时返回 false。可以使用 socket_last_error() 获取错误代码。此代码可以传递给 socket_strerror() 以获取错误的文本说明。

变更日志

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

参见

添加注释

用户贡献的注释 1 条注释

-2
renmengyang567 at gmail dot com
5 年前
<?php
// 为 tcp 创建
$sock = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
socket_bind($sock, '127.0.0.1',5000);
socket_listen($sock,1);
sleep(20);
?>

<fruit>
netstat -ntpl
活动 Internet 连接(仅服务器)
Proto Recv-Q Send-Q 本地地址 外部地址 状态 PID/程序名称
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 1839/php
To Top