getprotobynumber

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

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

描述

getprotobynumber(int $protocol): string|false

getprotobynumber() 返回与协议 protocol 关联的协议名称,如 /etc/protocols 中所定义。

参数

protocol

协议号。

返回值

返回协议名称作为字符串,或在失败时返回 false

参见

添加注释

用户贡献的注释 3 个注释

3
recycling dot sp dot am at gmail dot com
13 年前
注意,在撰写此注释时 (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
2
i at tiankonguse dot com
10 年前
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
1
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