PHP Conference Japan 2024

getprotobynumber

(PHP 4, PHP 5, PHP 7, PHP 8)

getprotobynumber获取与协议编号关联的协议名称

描述

getprotobynumber(int $protocol): string|false

getprotobynumber() 根据 /etc/protocols 返回与协议 protocol 关联的协议名称。

参数

protocol

协议编号。

返回值

返回协议名称作为字符串,如果失败则返回 false

参见

添加注释

用户贡献的注释 3 条注释

recycling dot sp dot am at gmail dot com
14 年前
请注意,在撰写此注释时(5.3.3),似乎只有两个定义的协议编号常量:SOL_UDP 和 SOL_TCP。
对于所有其他协议(如 ICMP 等),您必须提供确切的编号(例如:ICMP 为 1 等)。
<?php
echo getprotobynumber(SOL_TCP) . "\n"; // 输出 tcp
echo getprotobynumber(SOL_UDP) . "\n"; // 输出 udp
var_dump(getprotobyname('tcp') == SOL_TCP); // bool(true)
var_dump(getprotobyname('udp') == SOL_UDP); // bool(true)
?>
在 UNIX 系统上(不知道 Windows 是否也适用),php 函数 getprotobyname 和 getprotobynumber 只是其对应系统调用的包装器。这些函数根据 IANA 的定义返回协议名称或协议编号。如果您正在查找协议并且不知道其编号,则可以在此处找到确切的协议编号:http://www.iana.org/assignments/protocol-numbers
i at tiankonguse dot com
11 年前
getprotobynumber()
=====================
getprotobynumber() 获取本地系统上给定协议编号的协议名称。

如果无法识别协议编号,则函数返回 FALSE。

给定的代码片段列出了协议及其协议编号

=====================
代码

<?
$format = "number <---> protocol\n<br />";
$format = "%6s <---> %s\n<br />";
for($number = 0; $number < 255; $number ++) {
if (getprotobynumber ( $number ))

printf ( $format, " $number", getprotobynumber ( $number ) );
}
?>

=====================
输出
0 <---> ip
1 <---> icmp
2 <---> igmp
3 <---> ggp
4 <---> ipencap
5 <---> st
6 <---> tcp
8 <---> egp
9 <---> igp
12 <---> pup
17 <---> udp
20 <---> hmp
22 <---> xns-idp
27 <---> rdp
29 <---> iso-tp4
33 <---> dccp
36 <---> xtp
37 <---> ddp
38 <---> idpr-cmtp
41 <---> ipv6
43 <---> ipv6-route
44 <---> ipv6-frag
45 <---> idrp
46 <---> rsvp
47 <---> gre
50 <---> esp
51 <---> ah
57 <---> skip
58 <---> ipv6-icmp
59 <---> ipv6-nonxt
60 <---> ipv6-opts
73 <---> rspf
81 <---> vmtp
88 <---> eigrp
89 <---> ospf
93 <---> ax.25
94 <---> ipip
97 <---> etherip
98 <---> encap
103 <---> pim
108 <---> ipcomp
112 <---> vrrp
115 <---> l2tp
124 <---> isis
132 <---> sctp
133 <---> fc
135 <---> mobility-header
136 <---> udplite
137 <---> mpls-in-ip
138 <---> manet
139 <---> hip
140 <---> shim6
141 <---> wesp
142 <---> rohc
Vipindas K.S
16 年前
getprotobynumber()
=====================
getprotobynumber() 获取本地系统上给定协议编号的协议名称。如果无法识别协议编号,则函数返回 FALSE。给定的代码片段列出了协议及其协议编号

<?
$format = "%6s %s\n<br />";
for ($number = 0; $number < 255; $number++)
{
if (getprotobynumber ($number))

printf ($format, " $number-->", getprotobynumber ($number));
}

?>

输出

0--> ip
1--> icmp
3--> ggp
6--> tcp
8--> egp
12--> pup
17--> udp
20--> hmp
22--> xns-idp
27--> rdp
66--> rvd
To Top