创建tcp服务器


  服务端

//创建Server对象,监听 127.0.0.1:9501端口  
/*
$serv = new Server(string $host, int $port = 0, int $mode = SWOOLE_PROCESS,int $sock_type = SWOOLE_SOCK_TCP);
$host参数用来指定监听的ip地址,如127.0.0.1,或者外网地址,或者0.0.0.0监听全部地址
IPv4使用 127.0.0.1表示监听本机,0.0.0.0表示监听所有地址
IPv6使用::1表示监听本机,:: (相当于0:0:0:0:0:0:0:0) 表示监听所有地址
$mode运行的模式
SWOOLE_PROCESS多进程模式(默认)
SWOOLE_BASE基本模式
$sock_type指定Socket的类型,支持TCP、UDP、TCP6、UDP6、UnixSocket Stream/Dgram 6种
*/
$serv = new swoole_server("127.0.0.1", 9501); 
//可以在初始化化是设置参数
$serv->set(array(
    'reactor_num' => 2, //线程数
    'worker_num' => 4,    //进程数  如何查看是否开启4个进程  ps aft | grep tcp.php(server所在的文件)
    'backlog' => 128,   //listen backlog
    'max_request' => 50,//此参数表示worker进程在处理完n次请求后结束运行。manager会重新创建一个worker进程。此选项用来防止worker进程内存溢出。
    'dispatch_mode' => 1,
  'daemonize' => 1//后台运行 ));
//监听连接进入事件 $serv->on('connect', function ($serv, $fd) { echo "Client: Connect.\n"; }); //监听数据接收事件,from_id为线程ID $serv->on('receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, "Server: ".$data); }); //监听连接关闭事件 $serv->on('close', function ($serv, $fd) { echo "Client: Close.\n"; }); //启动服务器 $serv->start();

客服端:

<?php
/*
swoole_client->__construct(int $sock_type, int $is_sync = SWOOLE_SOCK_SYNC, string $key);
$sock_type表示socket的类型,如TCP/UDP
使用$sock_type | SWOOLE_SSL可以启用SSL加密
$is_sync表示同步阻塞还是异步非阻塞,默认为同步阻塞
$key用于长连接的Key,默认使用IP:PORT作为key。相同key的连接会被复用
*/
//连接swoole tcp 服务
$client = new swolle_client(SWOOLE_SOCK_TCP);
if(!$client->connect('127.0.0.1',9501)){
  echo "连接失败";die;  
}
fwite(STDOUT,"请输入消息:");
//获取信息
$mag = trim(fgets(STDIN));
//发送消息给server
$client->send($msg);
//接收server数据
$result = $client->recv();
echo $result;
也可以按照文档的复制
posted @ 2019-05-27 22:02  小呆1107  阅读(899)  评论(0编辑  收藏  举报