getprotobyname / getprotobynumber în PHP

Rețea PHP 4+

Află numărul unui protocol de rețea după nume (tcp = 6) sau, cu getprotobynumber, numele după număr.

Sintaxă
getprotobyname(string $protocol): int|false

Ce face getprotobyname / getprotobynumber

Fiecare protocol IP are un număr: icmp 1, tcp 6, udp 17. getprotobyname dă numărul după nume, iar getprotobynumber numele după număr. Datele vin din /etc/protocols.

Sunt folosite mai ales cu extensia sockets, de exemplu în socket_create(AF_INET, SOCK_STREAM, getprotobyname("tcp")).

Parametri

Parametru Descriere
$protocol Numele protocolului. La getprotobynumber: numărul lui.

Ce returnează

Numărul (sau numele, la getprotobynumber) ori false dacă protocolul nu există.

Exemple

Exemplul 1: În ambele sensuri

<?php
foreach (["icmp", "tcp", "udp"] as $nume) {
    echo "$nume = " . getprotobyname($nume) . "\n";
}
echo "17 = " . getprotobynumber(17) . "\n";
var_dump(getprotobynumber(999));

Rezultat

icmp = 1
tcp = 6
udp = 17
17 = udp
bool(false)

Greșeli frecvente

  • Confunzi numărul protocolului cu portul. getprotobyname("tcp") este 6, nu un port. Pentru porturi folosește getservbyname.

Comenzi înrudite

  • getservbyname / getservbyport: Află portul standard al unui serviciu (http, ssh, smtp) sau, cu getservbyport, serviciul unui port.
  • fsockopen / pfsockopen: Deschide o conexiune TCP (sau UDP, SSL) către un server și o returnează ca stream, pentru fwrite și fgets.