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 = "編號 <---> 協議\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 路由
44 <---> IPv6 分段
45 <---> IDRP
46 <---> RSVP
47 <---> GRE
50 <---> ESP
51 <---> AH
57 <---> SKIP
58 <---> IPv6-ICMP
59 <---> IPv6-NoNxt
60 <---> IPv6 選項
73 <---> RSPF
81 <---> VMTP
88 <---> EIGRP
89 <---> OSPF
93 <---> AX.25
94 <---> IPIP
97 <---> EtherIP
98 <---> 封裝
103 <---> PIM
108 <---> IP壓縮
112 <---> VRRP
115 <---> L2TP
124 <---> ISIS
132 <---> SCTP
133 <---> FC
135 <---> 移動性標頭
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