【Swoole】简单安装与创建TCP服务器

pecl install swoole

PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了php语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。

Swoole可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。

关于Swoole环境依赖和对PHP版本的要求,请参照Swoole的官方文档

http://wiki.swoole.com/wiki/page/7.html

安装

swoole项目已收录到PHP官方扩展库,我们可以通过PHP官方提供的pecl命令,一键下载安装swoole

pecl install swoole

注:需要先装php-pear

如果安装完出现如下提示

Installing ‘/usr/lib/php/modules/swoole.so‘
install ok: channel://pecl.php.net/swoole-1.9.0
configuration option "php_ini" is not set to php.ini location
You should add "extension=swoole.so" to php.ini

则需要我们手动在php.ini文件中添加

extension=swoole.so

创建TCP服务器

server.php

<?php
//创建Server对象,监听 127.0.0.1:9501端口
$serv = new swoole_server("127.0.0.1", 9501);

//监听连接进入事件
$serv->on(‘connect‘, function ($serv, $fd) {
    echo "Client: Connect.\n";
});

//监听数据发送事件
$serv->on(‘receive‘, function ($serv, $fd, $from_id, $data) {
    $serv->send($fd, "Server: ". $fd.‘-----‘ . $data);
});

//监听连接关闭事件
$serv->on(‘close‘, function ($serv, $fd) {
    echo "Client: Close.\n";
});

//启动服务器
$serv->start();

这里就创建了一个TCP服务器,监听本机9501端口。它的逻辑很简单,当客户端Socket通过网络发送一个 hello 字符串时,服务器会回复一个 Server: hello 字符串。

swoole_server是异步服务器,所以是通过监听事件的方式来编写程序的。当对应的事件发生时底层会主动回调指定的PHP函数。如当有新的TCP连接进入时会执行onConnect事件回调,当某个连接向服务器发送数据时会回调onReceive函数。

  • 服务器可以同时被成千上万个客户端连接,$fd就是客户端连接的唯一标识符
  • 调用$server->send()方法向客户端连接发送数据,参数就是$fd客户端标识符
  • 调用 $server->close()方法可以强制关闭某个客户端连接客户端可能会主动断开连接,此时会触发onClose事件回调

执行程序

php server.php

可以在命令行模式下输入

[[email protected]_114_93_centos ~]# netstat -tunpl | grep 9501
tcp        0      0 0.0.0.0:9501                0.0.0.0:*                   LISTEN      15387/php

看到,已经在监听9501端口

这时我们就可以用telnet命令来连接服务器了。

如果想要远程连接该服务器,只需将server.php中的IP地址改为0.0.0.0即可。

时间: 2024-08-24 05:25:58

【Swoole】简单安装与创建TCP服务器的相关文章

swoole 创建tcp服务器

server.php <?php /** * 创建tcp服务器 * Date: 2019/1/15 */ $serv = new swoole_server('127.0.0.1', 9501); // 监听连接进入事件 $serv->on('connect', function ($serv, $fd) { echo "Client: Connect.\n"; }); // 监听数据接收事件 $serv->on('receive', function ($serv,

Nodejs创建TCP服务器

Nodejs创建TCP服务器 1.Nodejs提供了net模块给我们,所以我们创建TCP服务器很简单: 1 require('net').createServer(function(socket) { 2 // new connection 3 socket.on('data', function(data) { 4 // got data 5 }); 6 socket.on('end', function(data) { 7 // connection closed 8 }); 9 socke

swoole创建TCP服务器和客户端

<?php //创建Server对象,监听 127.0.0.1:9501端口    $serv = new swoole_server("127.0.0.1", 9501);    //监听连接进入事件    $serv->on('connect', function ($serv, $fd) {       echo "Client: Connect.\n";       $serv->send($fd, "Server: connen

使用nodejs的net模块创建TCP服务器

[email protected] Contents 1.?代码实现 2.?使用telnet连接服务器测试 3.?创建一个TCP的client 1.?代码实现 const PORT = 18001; const HOST = '127.0.0.1'; var net = require('net'); var clientHandler = function(socket){ console.log('someon connected'); socket.on('data',function d

使用net模块创建tcp服务器

demo /** * Created by ZXW on 2018/4/6. */ var net=require('net'); const RORT=8080; const HOST='localhost'; var clientHandler=function(socket) { console.log('连接上了'); socket.on('data',function dataHandle(data) { console.log(socket.remoteAddress,socket.

6.swoole学习笔记--异步tcp服务器

<?php //创建tcp服务器 $host='0.0.0.0'; $port=9501; $serv=new swoole_server($host,$port); //设置异步进程工作数 $serv->set(array('task_worker_num'=>4)); //投递异步任务 $serv->on('receive',function($serv,$fd,$from_id,$data){ $task_id=$serv->task($data); echo &quo

【卷二】TCP服务器与客户端

经过上回简单地介绍,大家对服务器多少应该清楚一些了吧!还记得TCP: (Transmission Control Protocol) 传输控制协议? 还记得IP: (Internet Protocol)因特网协议, IPv4, IPv6? 如有不清楚,还请回去补充下概念...... 传送门: http://www.cnblogs.com/Ruby517/p/5808224.html 参考: <Python核心编程(3rd)> P51 ~ P57 ------------------------

Node 之 构建TCP服务器

OSI参考模型将网络通信功能划分为7层,即物理层.数据链路层.网络层.传输层.会话层.表示层和应用层.TCP协议就是位于传输层的协议.Node.js在创建一个TCP服务器的时候使用的是net(网络)模块. 使用Node.js创建TCP服务器,首先要使用require(‘net’)来加载net模块,之后使用net模块的createServer方法就可以创建一个TCP服务器. net.createServer([options],[connectionListener]) options是一个对象参

Mina、Netty、Twisted一起学:实现简单的TCP服务器

MINA.Netty.Twisted为什么放在一起学习?首先,不妨先看一下他们官方网站对其的介绍: MINA: Apache MINA is a network application framework which helps users develop high performance and high scalability network applications easily. It provides an abstract event-driven asynchronous API