ps aft|grep tcp.php
20688 pts/7 S+ 0:00 \_ grep --color=auto tcp.php 20450 pts/4 Sl+ 0:00 \_ php tcp.php 20451 pts/4 S+ 0:00 \_ php tcp.php 20453 pts/4 S+ 0:00 \_ php tcp.php 20454 pts/4 S+ 0:00 \_ php tcp.php 20455 pts/4 S+ 0:00 \_ php tcp.php 20456 pts/4 S+ 0:00 \_ php tcp.php 20457 pts/4 S+ 0:00 \_ php tcp.php 20458 pts/4 S+ 0:00 \_ php tcp.php 20459 pts/4 S+ 0:00 \_ php tcp.php 20460 pts/4 S+ 0:00 \_ php tcp.php
tcp.phpphp
<?php /** *User: lxw *Date: 2020-01-16 */ //建立Server对象,监听 127.0.0.1:9501端口 $serv = new swoole_server("127.0.0.1", 9501); $serv->set(array( 'worker_num'=>8, // worker 进程数 CPU 1~4 倍 'max_request'=>1000 )); /** * $fd:客户端链接的惟一标识 * $reactor_id: 线程id */ //监听链接进入事件 //事件回调函数四种方法 //1.匿名函数 $a='hello'; $b='world'; $serv->on('Connect', function ($serv, $fd,$reactor_id) use($a,$b) { echo "Client: {$reactor_id} - {$fd} Connect -{$a}-{$b}.\n"; }); //2.类静态方法 /*class A{ static function client ($serv, $fd,$reactor_id) { echo "Client: {$reactor_id} - {$fd} Connect.\n"; } } $serv->on('Connect', 'A::Client');*/ //$serv->on('Connect', array('A','client')); //3.函数 //function my_func($serv, $fd,$reactor_id){ // echo "Client: {$reactor_id} - {$fd} Connect 22.\n"; //} //$serv->on('Connect', 'my_func'); //4.对象方法 /*class B{ function client($serv, $fd,$reactor_id){ echo "Client: {$reactor_id} - {$fd} Connect 22.\n"; } } $obj=new B(); $serv->on('Connect', array($obj,'client'));*/ //监听数据接收事件 $serv->on('Receive', function ($serv, $fd, $reactor_id, $data) { $serv->send($fd, "Server: {$reactor_id} - {$fd} ".$data); }); //监听链接关闭事件 $serv->on('Close', function ($serv, $fd) { echo "Client: Close.\n"; }); //启动服务器 $serv->start(); //使用 telnet 127.0.0.1 9501 // netstat -anp|grep 9501
tcp_client.phpreact
<?php /** *User: lxw *Date: 2020-01-17 */ //链接 TCP 服务 $client=new swoole_client(SWOOLE_SOCK_TCP); if (!$client->connect('0.0.0.0',9501)){ echo '链接失败'; exit(); } //php cli 常量 fwrite(STDOUT,'请输入消息:'); $msg=trim(fgets(STDIN)); //发送消息给tcp server 服务器 $client->send($msg); //接受来自server 的数据 $result=$client->recv(); echo $result;