getservbyname()

1. 定义

该函数返回指定互联网服务和协议对应使用的端口。 如果服务或协议不存在则返回FALSE。

2. 语法

getservbyname ( string $service , string $protocol ) : int

3. 参数说明

参数 可选性 数据类型 描述
$service 必需 字符串 互联网服务名,例如http
$protocol 必需 字符串 互联网协议名,例如tcp

其中,$service所有服务及端口号列表可在此查询:http://www.iana.org/assignments/port-numbers,而`protocol`参数可以是`tcp`或者`udp`。

4. 示例

<?php

// getservbyname)()
// 返回指定互联网服务协议对应使用的端口

$service = 'http';
$port = getservbyname($service, 'tcp');
echo "$service 服务的 tcp 协议端口为:$port".PHP_EOL;// 输出:http 服务的 tcp 协议接口为:80

/* 利用该方法,我们可以获取已知的服务对应的端口号 */
$services = [
    'http','https','ftp','ssh','telnet','imap','pop3','smtp','www'
];
foreach ($services as $key => $value) {
    $port = getservbyname($value, 'tcp');
    printf("%-7s服务的TCP协议端口为:%-3d\n", $value, $port);
}
/* 输出:
http   服务的TCP协议端口为:80
https  服务的TCP协议端口为:443
ftp    服务的TCP协议端口为:21
ssh    服务的TCP协议端口为:22
telnet 服务的TCP协议端口为:23
imap   服务的TCP协议端口为:143
pop3   服务的TCP协议端口为:110
smtp   服务的TCP协议端口为:25
www    服务的TCP协议端口为:80
 */