Position actuelle: Accueil> Derniers articles> Quelle est la différence entre les fonctions getServbyName et GetServByport et à quels scénarios conviennent?

Quelle est la différence entre les fonctions getServbyName et GetServByport et à quels scénarios conviennent?

gitbox 2025-09-08

[Quelle est la différence entre les fonctions getServbyName et GetservByport et à quels scénarios conviennent? ]]

Dans PHP, getServbyName et getServbyport sont deux fonctions liées à la programmation réseau. Ils sont utilisés pour obtenir la relation de mappage entre le numéro de port du service et le nom du service, aidant les développeurs à fournir des requêtes pratiques lors du traitement des fonctions liées à la communication réseau. Bien qu'ils aient des similitudes fonctionnelles, leurs scénarios d'application et leurs méthodes de livraison de paramètres sont différents.

1. Présentation de la fonction

1. Fonction getServbyname

La fonction getServbyName est utilisée pour obtenir le numéro de port correspondant via le nom du service. Sa syntaxe de base est la suivante:

 <span><span><span class="hljs-title function_ invoke__">getservbyname</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$service</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$protocol</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
  • $ Service : représente le nom du service, tel que "http" , "ftp" , "smtp" , etc.

  • $ Protocole : spécifie le type de protocole, généralement "TCP" ou "UDP" pour spécifier le protocole auquel le service s'exécute.

Cette fonction renvoie le numéro de port correspondant au nom du service et, s'il n'est pas trouvé, faux .

2. Fonction getServbyport

Contrairement à getServbyName , la fonction GetServByport est utilisée pour obtenir le nom du service via le numéro de port. Sa syntaxe de base est la suivante:

 <span><span><span class="hljs-title function_ invoke__">getservbyport</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$port</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$protocol</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
  • $ port : représente le numéro de port, généralement une valeur entière (par exemple, 80, 443, 21, etc.).

  • $ Protocole : également le type de protocole spécifié, généralement "TCP" ou "UDP" .

Cette fonction renvoie le nom du service qui correspond au numéro de port et, s'il n'est pas trouvé, faux .

2. Différences principales

Bien que les fonctions GetServbyName et GetServByport soient utilisées pour interroger la relation de mappage entre les services et les ports, leur différence de base est que le point de départ de la requête est différent:

  1. Différentes méthodes de requête :

    • getServbyName trouve le numéro de port en fonction du nom du service.

    • getServByport trouve le nom du service en fonction du numéro de port.

  2. Différents scénarios applicables :

    • Lorsque vous connaissez le nom du service (tel que HTTP, FTP, etc.), mais que vous devez interroger le numéro de port qu'il utilise, utilisez getServbyName .

    • Lorsque vous connaissez le numéro de port (tel que 80, 443, etc.), mais que vous souhaitez savoir quel service utilise ce port, utilisez getServbyport .

  3. La valeur de retour est différente :

    • getServbyName renvoie le numéro de port.

    • getServbyport renvoie le nom du service.

3. Scénarios appropriés

1. Scénarios utilisant GetServbyName :

  • Déterminez le port utilisé par le service :
    Si vous développez un service réseau, vous devrez peut-être interroger le numéro de port correspondant en fonction du nom du service. Par exemple, lors du développement d'une application Web, vous pouvez confirmer le numéro de port utilisé par le service HTTP (généralement 80), ou le numéro de port utilisé par le service HTTPS (généralement 443). Vous pouvez utiliser getServbyName pour le moment.

    Exemple de code:

     <span><span><span class="hljs-variable">$port</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getservbyname</span></span><span>(</span><span><span class="hljs-string">'http'</span></span><span>, </span><span><span class="hljs-string">'tcp'</span></span><span>);
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"HTTP Le numéro de port du service est: <span class="hljs-subst">$port</span></span></span><span>";
    </span></span>
  • Configuration du port pour les applications réseau :
    Lorsque vous écrivez du code lié aux protocoles réseau, vous devrez peut-être obtenir le numéro de port pour la liaison de socket ou la configuration de communication réseau. À l'heure actuelle, vous pouvez utiliser la fonction getServbyName pour obtenir le numéro de port.

2. Scénarios utilisant Getservbyport :

  • Trouver des services par numéro de port :
    Lorsque vous effectuez des audits de dépannage de réseau ou de sécurité, vous pouvez rencontrer des situations où vous ne connaissez que le numéro de port mais pas de quel service il s'agit. À l'heure actuelle, vous pouvez utiliser getServbyport pour obtenir le nom de service correspondant au port.

    Exemple de code:

     <span><span><span class="hljs-variable">$service</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getservbyport</span></span><span>(</span><span><span class="hljs-number">80</span></span><span>, </span><span><span class="hljs-string">'tcp'</span></span><span>);
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"port 80 Le service correspondant est: <span class="hljs-subst">$service</span></span></span><span>";
    </span></span>
  • Gérer le numéro de port et le mappage de service :
    Si vous développez un outil de configuration de surveillance du réseau ou un outil de configuration de règle de pare-feu, vous devrez peut-être obtenir le nom de service correspondant via le numéro de port pour le paramètre de règle et l'identification du service. À l'heure actuelle, vous pouvez rapidement obtenir le nom du service en utilisant getServbyport .

4. Résumé

getServbyName et getServbyport sont tous deux des outils utiles pour gérer les services réseau et les relations portuaires. Le choix de la bonne fonction peut aider les développeurs à gérer efficacement les services et le débogage du réseau:

  • Lorsque vous connaissez le nom du service et que vous souhaitez interroger son port, utilisez getServbyName .

  • Lorsque vous connaissez le numéro de port et que vous souhaitez interroger le service à l'aide de ce port, utilisez Getservbyport .

La différence entre ces deux fonctions se reflète principalement au point de départ de la requête et des résultats retournés, et les développeurs choisissent de l'utiliser en fonction de leurs besoins spécifiques.