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.
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 :
composer create-project swoft/swoft swoft-project
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'] . " "; } }
echo
, qui accepte les données envoyées par le client et renvoie le même message. Etape 4 : Créer un serveur TCP
TcpServer.php</code dans le répertoire <code>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
方法,该方法接受客户端发送的数据并返回相同的消息。
在项目的 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
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éthodeecho
, 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!