本文实例讲述了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