PHP使用swoole编写简单的echo服务器示例
吾爱主题
阅读:151
2021-10-06 13:36:00
评论:0
本文实例讲述了PHP使用swoole编写简单的echo服务器。分享给大家供大家参考,具体如下:
server.php代码如下:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <?php class EchoServer { protected $serv = null; public function __construct() { $this ->serv = new swoole_server( '0.0.0.0' , 8888); //配置参数 $this ->serv->set( array ( 'worker_num' => 4, 'daemonize' => 0, )); //注册回调函数 $this ->serv->on( 'start' , array ( $this , 'start' )); $this ->serv->on( 'connect' , array ( $this , 'connect' )); $this ->serv->on( 'receive' , array ( $this , 'receive' )); $this ->serv->on( 'close' , array ( $this , 'close' )); //启动服务 $this ->serv->start(); } public function start( $serv ) { echo "start \n" ; } //有客户端连接时 public function connect( $serv , $fd ) { echo "connect \n" ; $serv ->send( $fd , "hello \n" ); } public function close( $serv , $fd ) { echo "close \n" ; } public function receive( $serv , $fd , $from_id , $data ) { echo "get message {$fd} : {$data} \n" ; //向客户端发送信息 $serv ->send( $fd , $data . "\n" ); } } $serv = new EchoServer(); |
client.php代码如下:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <?php class EchoClient { protected $client = null; public function __construct() { //注意这里需设置为异步,不然下面无法设置事件回调函数 $this ->client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); $this ->client->on( 'connect' , array ( $this , 'connect' )); $this ->client->on( 'receive' , array ( $this , 'receive' )); $this ->client->on( 'close' , array ( $this , 'close' )); $this ->client->on( 'error' , array ( $this , 'error' )); //连接服务端 $this ->client->connect( '0.0.0.0' , 8888); } public function connect( $client ) { echo "connect \n" ; } public function receive( $client , $data ) { echo "server send: {$data}" ; //向标准输出写入数据 fwrite(STDOUT, "请输入消息:" ); //获取标准输入数据 $msg = trim( fgets (STDIN)); //向服务端发送数据 $client ->send( $msg ); } public function close( $client ) { echo "close \n" ; } public function error( $client ) { echo "error \n" ; } } $cli = new EchoClient(); |
然后分别运行这两个脚本
?1 2 | > /data/php56/bin/php server.php > /data/php56/bin/php client.php |
运行结果如下:
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://www.cnblogs.com/jkko123/p/6524280.html
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。