预定义常量

以下常量由此扩展定义,并且仅在将扩展编译到 PHP 中或在运行时动态加载时才可用。

AF_UNIX (int)
Unix 域中文件系统路径名的套接字地址族。
AF_INET (int)
Internet 域中 IPv4 的套接字地址族。
AF_INET6 (int)
Internet 域中 IPv6 的套接字地址族。仅在使用 IPv6 支持编译时可用。
AF_DIVERT (int)
从 PHP 8.3.0 开始可用(仅限 FreeBSD)
SOCK_STREAM (int)
SOCK_DGRAM (int)
SOCK_RAW (int)
SOCK_SEQPACKET (int)
SOCK_RDM (int)
MSG_OOB (int)
MSG_WAITALL (int)
MSG_PEEK (int)
MSG_DONTROUTE (int)
MSG_EOR (int)
在 Windows 平台上不可用。
MSG_EOF (int)
在 Windows 平台上不可用。
MSG_ZEROCOPY (int)
从 PHP 8.2.0 开始可用
SO_DEBUG (int)
SO_REUSEADDR (int)
SO_REUSEPORT (int)
此常量仅在支持 SO_REUSEPORT 套接字选项的平台上可用:这包括 Linux、macOS 和 *BSD,但不包括 Windows。
SO_KEEPALIVE (int)
SO_DONTROUTE (int)
SO_LINGER (int)
SO_BROADCAST (int)
SO_OOBINLINE (int)
SO_SNDBUF (int)
SO_RCVBUF (int)
SO_SNDLOWAT (int)
SO_RCVLOWAT (int)
SO_SNDTIMEO (int)
SO_RCVTIMEO (int)
SO_TYPE (int)
SO_ERROR (int)
SO_ZEROCOPY (int)
从 PHP 8.2.0 开始可用
TCP_NODELAY (int)
用于禁用 Nagle TCP 算法。
TCP_KEEPCNT (int)
从 PHP 8.2.0 开始可用
TCP_KEEPIDLE (int)
从 PHP 8.2.0 开始可用
TCP_KEEPINTVL (int)
从 PHP 8.2.0 开始可用
TCP_KEEPALIVE (int)
从 PHP 8.2.0 开始可用
TCP_NOTSENT_LOWAT (int)
从 PHP 8.2.0 开始可用
SO_MARK (int)
从 PHP 8.1.0 开始可用
从 PHP 8.1.0 开始可用
SO_RTABLE (int)
从 PHP 8.2.0 开始可用
SO_ACCEPTFILTER (int)
从 PHP 8.1.0 开始可用
SO_DONTTRUNC (int)
从 PHP 8.1.0 开始可用
SO_WANTMORE (int)
从 PHP 8.1.0 开始可用
SO_INCOMING_CPU (int)
从 PHP 8.2.0 开始可用
SO_MEMINFO (int)
从 PHP 8.2.0 开始可用
SO_BPF_EXTENSIONS (int)
从 PHP 8.2.0 开始可用
SO_SETFIB (int)
从 PHP 8.2.0 开始可用
SO_ATTACH_REUSEPORT_CBPF (int)
从 PHP 8.3.0 开始可用(仅限 Linux)
SO_DETACH_BPF (int)
从 PHP 8.3.0 开始可用(仅限 Linux)
SO_DETACH_FILTER (int)
从 PHP 8.3.0 开始可用(仅限 Linux)
SO_RERROR (int)
从 PHP 8.3.0 开始可用(仅限 NetBSD)
SO_ZEROIZE (int)
从 PHP 8.3.0 开始可用(仅限 OpenBSD)
SO_SPLICE (int)
从 PHP 8.3.0 开始可用(仅限 OpenBSD)
SO_REUSEPORT_LB (int)
从 PHP 8.3.0 开始可用(仅限 FreeBSD)
SOL_FILTER (int)
从 PHP 8.2.0 开始可用
SOL_UDPLITE (int)
从 PHP 8.3.0 开始可用
UDPLITE_RECV_CSCOV (int)
从 PHP 8.3.0 开始可用
UDPLITE_SEND_CSCOV (int)
从 PHP 8.3.0 开始可用
TCP_DEFER_ACCEPT (int)
从 PHP 8.1.0 开始可用
TCP_CONGESTION (int)
从 PHP 8.2.0 开始可用
TCP_QUICKACK (int)
从 PHP 8.3.0 开始可用(仅限 Linux)
TCP_REPAIR (int)
从 PHP 8.3.0 开始可用(仅限 Linux)
IP_DONTFRAG (int)
从 PHP 8.3.0 开始可用(仅限 FreeBSD)
IP_MTU_DISCOVER (int)
从 PHP 8.3.0 开始可用(仅限 Linux)
IP_PMTUDISC_DO (int)
从 PHP 8.3.0 开始可用(仅限 Linux)
IP_PMTUDISC_DONT (int)
从 PHP 8.3.0 开始可用(仅限 Linux)
IP_PMTUDISC_WANT (int)
从 PHP 8.3.0 开始可用(仅限 Linux)
IP_PMTUDISC_PROBE (int)
从 PHP 8.3.0 开始可用(仅限 Linux)
IP_PMTUDISC_INTERFACE (int)
从 PHP 8.3.0 开始可用(仅限 Linux)
IP_PMTUDISC_OMIT (int)
从 PHP 8.3.0 开始可用(仅限 Linux)
IP_BIND_ADDRESS_NO_PORT (int)
从 PHP 8.3.0 开始可用(仅限 Linux)
SOL_SOCKET (int)
PHP_NORMAL_READ (int)
PHP_BINARY_READ (int)
SOL_TCP (int)
SOL_UDP (int)

以下常量在 Windows 和类 Unix 平台上定义。每个常量仅在平台上存在等效项时定义。

SOCKET_EINTR (int)
中断的系统调用。
SOCKET_EBADF (int)
无效的文件描述符编号。
SOCKET_EACCES (int)
权限被拒绝。
SOCKET_EFAULT (int)
无效地址。
SOCKET_EINVAL (int)
无效参数。
SOCKET_EMFILE (int)
打开的文件太多。
SOCKET_ENAMETOOLONG (int)
文件名过长。
SOCKET_ENOTEMPTY (int)
目录不为空。
SOCKET_ELOOP (int)
遇到的符号链接太多。
SOCKET_EWOULDBLOCK (int)
操作将阻塞。
SOCKET_EREMOTE (int)
对象是远程的。
SOCKET_EUSERS (int)
用户太多。
SOCKET_ENOTSOCK (int)
对非套接字执行套接字操作。
SOCKET_EDESTADDRREQ (int)
需要目标地址。
SOCKET_EMSGSIZE (int)
消息过长。
SOCKET_EPROTOTYPE (int)
协议类型与套接字不匹配。
SOCKET_EPROTONOSUPPORT (int)
不支持协议。
SOCKET_ESOCKTNOSUPPORT (int)
不支持套接字类型。
SOCKET_EOPNOTSUPP (int)
对传输端点不支持此操作。
SOCKET_EPFNOSUPPORT (int)
不支持协议族。
SOCKET_EAFNOSUPPORT (int)
协议不支持地址族。
SOCKET_EADDRNOTAVAIL (int)
无法分配请求的地址。
SOCKET_ENETDOWN (int)
网络已关闭。
SOCKET_ENETUNREACH (int)
网络不可达。
SOCKET_ENETRESET (int)
网络由于重置而断开连接。
SOCKET_ECONNABORTED (int)
软件导致连接中止。
SOCKET_ECONNRESET (int)
连接被对等方重置。
SOCKET_ENOBUFS (int)
没有可用的缓冲区空间。
SOCKET_EISCONN (int)
传输端点已连接。
SOCKET_ENOTCONN (int)
传输端点未连接。
SOCKET_ESHUTDOWN (int)
传输端点关闭后无法发送。
SOCKET_ETIMEDOUT (int)
连接超时。
SOCKET_ECONNREFUSED (int)
连接被拒绝。
SOCKET_EHOSTDOWN (int)
主机已关闭。
SOCKET_EHOSTUNREACH (int)
没有到主机的路由。
SOCKET_EALREADY (int)
操作已在进行中。
SOCKET_EINPROGRESS (int)
操作正在进行中。

以下常量仅在 Windows 下定义。

SOCKET_ENOPROTOOPT (int)
SOCKET_EADDRINUSE (int)
SOCKET_ETOOMYREFS (int)
SOCKET_EPROCLIM (int)
SOCKET_EDUOT (int)
SOCKET_ESTALE (int)
SOCKET_EDISCON (int)
SOCKET_SYSNOTREADY (int)
SOCKET_VERNOTSUPPORTED (int)
SOCKET_NOTINITIALISED (int)
SOCKET_HOST_NOT_FOUND (int)
SOCKET_TRY_AGAIN (int)
SOCKET_NO_RECOVERY (int)
SOCKET_NO_DATA (int)
SOCKET_NO_ADDRESS (int)

以下常量仅在类 Unix 平台上提供。每个常量仅在平台上存在等效项时定义。

SOCKET_EPERM (int)
操作不被允许。
SOCKET_ENOENT (int)
没有这样的文件或目录。
SOCKET_EIO (int)
I/O 错误。
SOCKET_ENXIO (int)
没有这样的设备或地址。
SOCKET_E2BIG (int)
参数列表过长。
SOCKET_EAGAIN (int)
重试。
SOCKET_ENOMEM (int)
内存不足。
SOCKET_ENOTBLK (int)
需要块设备。
SOCKET_EBUSY (int)
设备或资源繁忙。
SOCKET_EEXIST (int)
文件存在。
SOCKET_EXDEV (int)
跨设备链接。
SOCKET_ENODEV (int)
没有这样的设备。
SOCKET_ENOTDIR (int)
不是目录。
SOCKET_EISDIR (int)
是目录。
SOCKET_ENFILE (int)
文件表溢出。
SOCKET_ENOTTY (int)
不是打字机。
SOCKET_ENOSPC (int)
设备上没有剩余空间。
SOCKET_ESPIPE (int)
非法寻址。
SOCKET_EROFS (int)
只读文件系统。
链接过多。
SOCKET_EPIPE (int)
管道破损。
SOCKET_ENOLCK (int)
没有可用的记录锁。
SOCKET_ENOSYS (int)
功能未实现。
SOCKET_ENOMSG (int)
没有所需类型的消息。
SOCKET_EIDRM (int)
标识符已删除。
SOCKET_ECHRNG (int)
通道号超出范围。
SOCKET_EL2NSYNC (int)
二级未同步。
SOCKET_EL3HLT (int)
三级已暂停。
SOCKET_EL3RST (int)
三级已重置。
SOCKET_ELNRNG (int)
链接号超出范围。
SOCKET_EUNATCH (int)
协议驱动程序未附加。
SOCKET_ENOCSI (int)
没有可用的 CSI 结构。
SOCKET_EL2HLT (int)
二级已暂停。
SOCKET_EBADE (int)
无效的交换。
SOCKET_EBADR (int)
无效的请求描述符。
SOCKET_EXFULL (int)
交换已满。
SOCKET_ENOANO (int)
没有阳极。
SOCKET_EBADRQC (int)
无效的请求代码。
SOCKET_EBADSLT (int)
无效的插槽。
SOCKET_ENOSTR (int)
设备不是流。
SOCKET_ENODATA (int)
没有可用的数据。
SOCKET_ETIME (int)
计时器已过期。
SOCKET_ENOSR (int)
流资源不足。
SOCKET_ENONET (int)
机器不在网络上。
链接已断开。
SOCKET_EADV (int)
广告错误。
SOCKET_ESRMNT (int)
Srmount 错误。
SOCKET_ECOMM (int)
发送时通信错误。
SOCKET_EPROTO (int)
协议错误。
SOCKET_EMULTIHOP (int)
尝试了多跳。
SOCKET_EBADMSG (int)
不是数据消息。
SOCKET_ENOTUNIQ (int)
名称在网络上不唯一。
SOCKET_EBADFD (int)
文件描述符处于错误状态。
SOCKET_EREMCHG (int)
远程地址已更改。
SOCKET_ERESTART (int)
应重新启动中断的系统调用。
SOCKET_ESTRPIPE (int)
流管道错误。
SOCKET_EPROTOOPT (int)
协议不可用。
SOCKET_ADDRINUSE (int)
地址已被使用。
SOCKET_ETOOMANYREFS (int)
引用过多:无法拼接。
SOCKET_EISNAM (int)
是命名类型文件。
SOCKET_EREMOTEIO (int)
远程 I/O 错误。
SOCKET_EDQUOT (int)
配额已满。
SOCKET_ENOMEDIUM (int)
未找到介质。
SOCKET_EMEDIUMTYPE (int)
介质类型错误。
SCM_RIGHTS (int)
从另一个进程发送或接收一组打开的文件描述符。
SCM_CREDENTIALS (int)
SCM_CREDS (int)
从 PHP 8.2.0 开始可用
SCM_CREDS2 (int)
从 PHP 8.2.0 开始可用
LOCAL_CREDS (int)
从 PHP 8.2.0 开始可用
LOCAL_CREDS_PERSISTENT (int)
从 PHP 8.2.0 开始可用
SKF_AD_OFF (int)
从 PHP 8.2.0 开始可用
SKF_AD_PROTOCOL (int)
从 PHP 8.2.0 开始可用
SKF_AD_PKTTYPE (int)
从 PHP 8.2.0 开始可用
SKF_AD_IFINDEX (int)
从 PHP 8.2.0 开始可用
SKF_AD_NLATTR (int)
从 PHP 8.2.0 开始可用
SKF_AD_NLATTR_NEST (int)
从 PHP 8.2.0 开始可用
SKF_AD_MARK (int)
从 PHP 8.2.0 开始可用
SKF_AD_QUEUE (int)
从 PHP 8.2.0 开始可用
SKF_AD_HATYPE (int)
从 PHP 8.2.0 开始可用
SKF_AD_RXHASH (int)
从 PHP 8.2.0 开始可用
SKF_AD_CPU (int)
从 PHP 8.2.0 开始可用
SKF_AD_ALU_XOR_X (int)
从 PHP 8.2.0 开始可用
SKF_AD_VLAN_TAG (int)
从 PHP 8.2.0 开始可用
SKF_AD_VLAN_TAG_PRESENT (int)
从 PHP 8.2.0 开始可用
SKF_AD_PAY_OFFSET (int)
从 PHP 8.2.0 开始可用
SKF_AD_RANDOM (int)
从 PHP 8.2.0 开始可用
SKF_AD_VLAN_TPID (int)
从 PHP 8.2.0 开始可用
SKF_AD_MAX (int)
从 PHP 8.2.0 开始可用
AI_ADDRCONFIG (int)
AI_ALL (int)
AI_CANONIDN (int)
AI_CANONNAME (int)
AI_IDN (int)
AI_NUMERICHOST (int)
AI_NUMERICSERV (int)
AI_PASSIVE (int)
AI_V4MAPPED (int)
FIL_ATTACH (int)
FIL_DETACH (int)
IPPROTO_IP (int)
IPPROTO_IPV6 (int)
IPV6_HOPLIMIT (int)
IPV6_MULTICAST_HOPS (int)
IPV6_MULTICAST_IF (int)
IPV6_MULTICAST_LOOP (int)
IPV6_PKTINFO (int)
IPV6_RECVHOPLIMIT (int)
IPV6_RECVPKTINFO (int)
IPV6_RECVTCLASS (int)
IPV6_TCLASS (int)
IPV6_UNICAST_HOPS (int)
IPV6_V6ONLY (int)
IP_MULTICAST_IF (int)
IP_MULTICAST_LOOP (int)
IP_MULTICAST_TTL (int)
MCAST_BLOCK_SOURCE (int)
MCAST_JOIN_GROUP (int)
MCAST_JOIN_SOURCE_GROUP (int)
MCAST_LEAVE_GROUP (int)
MCAST_LEAVE_SOURCE_GROUP (int)
MCAST_UNBLOCK_SOURCE (int)
MSG_CMSG_CLOEXEC (int)
MSG_CONFIRM (int)
MSG_CTRUNC (int)
MSG_DONTWAIT (int)
MSG_ERRQUEUE (int)
MSG_MORE (int)
MSG_NOSIGNAL (int)
MSG_TRUNC (int)
MSG_WAITFORONE (int)
SOL_LOCAL (int)
SOMAXCONN (int)
SO_BINDTODEVICE (int)
SO_FAMILY (int)
SO_LABEL (int)
SO_LISTENQLEN (int)
SO_LISTENQLIMIT (int)
SO_PASSCRED (int)
SO_PEERLABEL (int)
添加备注

用户贡献备注 4 个备注

匿名
12 年前
我们可以使用以下代码了解套接字常量的值

<?php
$a
= get_defined_constants(TRUE) ;
foreach (
$a['sockets'] as $constant => $value ) {
printf("%-25s %d\r\n", $constant, $value) ;
}
?>

AF_UNIX 1
AF_INET 2
AF_INET6 23
SOCK_STREAM 1
SOCK_DGRAM 2
SOCK_RAW 3
SOCK_SEQPACKET 5
SOCK_RDM 4
MSG_OOB 1
MSG_WAITALL 0
MSG_PEEK 2
MSG_DONTROUTE 4
SO_DEBUG 1
SO_REUSEADDR 4
SO_KEEPALIVE 8
SO_DONTROUTE 16
SO_LINGER 128
SO_BROADCAST 32
SO_OOBINLINE 256
SO_SNDBUF 4097
SO_RCVBUF 4098
SO_SNDLOWAT 4099
SO_RCVLOWAT 4100
SO_SNDTIMEO 4101
SO_RCVTIMEO 4102
SO_TYPE 4104
SO_ERROR 4103
SOL_SOCKET 65535
SOMAXCONN 2147483647
TCP_NODELAY 1
PHP_NORMAL_READ 1
PHP_BINARY_READ 2
SOCKET_EINTR 10004
SOCKET_EBADF 10009
SOCKET_EACCES 10013
SOCKET_EFAULT 10014
SOCKET_EINVAL 10022
SOCKET_EMFILE 10024
SOCKET_EWOULDBLOCK 10035
SOCKET_EINPROGRESS 10036
SOCKET_EALREADY 10037
SOCKET_ENOTSOCK 10038
SOCKET_EDESTADDRREQ 10039
SOCKET_EMSGSIZE 10040
SOCKET_EPROTOTYPE 10041
SOCKET_ENOPROTOOPT 10042
SOCKET_EPROTONOSUPPORT 10043
SOCKET_ESOCKTNOSUPPORT 10044
SOCKET_EOPNOTSUPP 10045
SOCKET_EPFNOSUPPORT 10046
SOCKET_EAFNOSUPPORT 10047
SOCKET_EADDRINUSE 10048
SOCKET_EADDRNOTAVAIL 10049
SOCKET_ENETDOWN 10050
SOCKET_ENETUNREACH 10051
SOCKET_ENETRESET 10052
SOCKET_ECONNABORTED 10053
SOCKET_ECONNRESET 10054
SOCKET_ENOBUFS 10055
SOCKET_EISCONN 10056
SOCKET_ENOTCONN 10057
SOCKET_ESHUTDOWN 10058
SOCKET_ETOOMANYREFS 10059
SOCKET_ETIMEDOUT 10060
SOCKET_ECONNREFUSED 10061
SOCKET_ELOOP 10062
SOCKET_ENAMETOOLONG 10063
SOCKET_EHOSTDOWN 10064
SOCKET_EHOSTUNREACH 10065
SOCKET_ENOTEMPTY 10066
SOCKET_EPROCLIM 10067
SOCKET_EUSERS 10068
SOCKET_EDQUOT 10069
SOCKET_ESTALE 10070
SOCKET_EREMOTE 10071
SOCKET_EDISCON 10101
SOCKET_SYSNOTREADY 10091
SOCKET_VERNOTSUPPORTED 10092
SOCKET_NOTINITIALISED 10093
SOCKET_HOST_NOT_FOUND 11001
SOCKET_TRY_AGAIN 11002
SOCKET_NO_RECOVERY 11003
SOCKET_NO_DATA 11004
SOCKET_NO_ADDRESS 11004
SOL_TCP 6
SOL_UDP 17
gvgvgvijayan at gmail dot com
11 年前
$a = get_defined_constants(TRUE);
foreach ($a as $k => $v) {
printf('%-25s <br/>', $k);
foreach ($v as $k => $v) {
printf('&nbsp;&nbsp;&nbsp;&nbsp--->%-25s %d<br/>', $k, $v);
}
}

这可能与之前的匿名帖子重复,但该代码片段仅返回 1 作为常量值
1-->首先通过传递参数 true 来对数据进行分类,调用 get_defined_constants
2-->然后使用 foreach 迭代数组的索引
3-->这里使用 printf 打印类别标题
4-->然后它移动到内部数组,并显示每个类别中可用的常量列表及其值
kenverhaegen at gmail dot com
4 年前
看起来 SOCKET_EAGAIN 是 SOCKET_EWOULDBLOCK(int 11)的别名
yyb8 at vip dot qq dot com
7 年前
注意:Linux 内核 3.9 现在支持 SO_REUSEPORT 选项
To Top