Maison  >  Article  >  développement back-end  >  Développement PHP : Comment utiliser Swoft pour implémenter un serveur TCP

Développement PHP : Comment utiliser Swoft pour implémenter un serveur TCP

WBOY
WBOYoriginal
2023-06-15 20:07:511400parcourir

En programmation réseau, TCP est un protocole important. En PHP, l'implémentation du serveur TCP peut non seulement améliorer l'efficacité de la programmation réseau, mais aussi apprendre de ce modèle pour implémenter certaines applications réseau. Cet article explique comment utiliser le framework Swoft pour implémenter rapidement un serveur TCP.

Introduction au framework Swoft

Swoft est un framework réseau de coroutines PHP hautes performances basé sur l'extension Swoole. Il implémente des coroutines similaires au langage Go, améliorant considérablement les performances et l'efficacité de PHP. en programmation réseau.

Swoft présente les caractéristiques suivantes :

  • Haute performance : utilisation de la technologie coroutine pour implémenter des applications réseau à haute concurrence
  • Haute flexibilité : le framework lui-même Fournit de nombreux composants et prend en charge la bibliothèque Composer
  • Haute fiabilité : grâce à la gestion des exceptions et aux codes d'erreur personnalisés, la robustesse de l'application est améliorée
  • Haute maintenabilité : bon Commentaires et une documentation complète simplifient le développement et la maintenance. Première étape : préparer les outils
  • Avant d'utiliser le framework Swoft pour implémenter le serveur TCP, vous devez installer les outils suivants :

PHP 7.1 ou version supérieure# 🎜🎜#

Swoft Framework

Swoole Extension

    Étape 2 : Créer un projet
  • Tout d'abord, utilisez Créer un Swoft projet avec l'outil Composer :
  • composer create-project swoft/swoft swoft-project
  • Etape 3 : Créer un contrôleur
  • Créer un app/Controller du projet > TcpController.php, le contenu est le suivant :
namespace AppController;

use SwoftHttpMessageRequest;
use SwoftHttpMessageResponse;
use SwoftTcpServerAnnotationMappingTcpController;
use SwoftTcpServerAnnotationMappingTcpMapping;

/**
 * @TcpController()
 */
class TcpController
{
    /**
     * @TcpMapping("echo")
     */
    public function echo(Request $request)
    {
        $params = $request->getParams();
        return $params['msg'] . "
";
    }
}

Dans le contrôleur, on définit une méthode echo, qui accepte les données envoyées par le client et renvoie le même message.

Etape 4 : Créer un serveur TCP

Créer un TcpServer.phpdans le répertoire app/Server du projet > fichier, qui est le point d'entrée pour démarrer le serveur TCP. Le contenu est le suivant :

namespace AppServer;

use SwoftBeanAnnotationMappingBean;
use SwoftLogHelperCLog;
use SwoftTcpServerAnnotationMappingTcpServer;
use SwoftTcpServerRequest;

/**
 * @Bean()
 * @TcpServer(port=9999)
 */
class TcpServer
{
    public function onReceive(Request $request)
    {
        $params = $request->getParams();
        $msg = $params['data'];
        CLog::info('receive data:%s', $msg);
        $response = "received:" . $msg;
        return $response;
    }
}

Dans TcpServer, on précise le port via le @TcpServer. annotation, Et implémenter la méthode onReceive pour accepter les données envoyées par le client. Dans cette méthode, nous pouvons transmettre la demande au contrôleur spécifié pour compléter la logique métier. app/Controller 目录下创建一个 TcpController.php 文件,内容如下:

php bin/swoft tcp:start

在控制器中,我们定义了一个 echo 方法,该方法接受客户端发送的数据并返回相同的消息。

第四步:创建 TCP 服务端

在项目的 app/Server 目录下创建一个 TcpServer.php 文件,该文件是启动 TCP 服务端的入口,内容如下:

telnet localhost 9999
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
{"method":"echo","params":{"msg":"hello, swoft!"}}
hello, swoft!
Connection closed by foreign host.

TcpServer 中,我们通过 @TcpServer 注解指定端口,并实现 onReceive 方法接受客户端发送的数据,在该方法中我们可以将请求转发给指定的控制器,完成业务逻辑。

第五步:运行程序

在命令行中执行以下命令,启动 TCP 服务端:

rrreee

在另一个终端中,使用 telnet 对 TCP 服务端进行测试:

rrreee

客户端向服务端发送了一条 JSON 格式的数据,服务端解析该数据并调用 echo

Étape 5 : Exécutez le programme

Exécutez la commande suivante dans la ligne de commande pour démarrer le serveur TCP :

rrreee

Dans un autre terminal, utilisez telnet pour tester le serveur TCP : #🎜🎜#rrreee#🎜🎜#Le client envoie une donnée au format JSON au serveur, et le serveur analyse les données et appelle la méthode echo, renvoyant la même chose des données, le client imprime les données reçues et quitte la connexion. #🎜🎜##🎜🎜#Résumé#🎜🎜##🎜🎜#Grâce au framework Swoft, nous pouvons facilement implémenter le serveur TCP, ce qui améliore considérablement l'efficacité de la programmation réseau. Dans les applications réelles, nous pouvons ajuster et étendre cet exemple de programme en fonction des besoins de l'entreprise afin de mettre en œuvre des applications réseau plus riches. #🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn