swoole学习第二讲(创建一个TCP服务器)

创建一个TCP server

以下操作默认你已经掌握了laradock的基本使用

  1. 在laradock目录下执行 docker-compose up -d mysql nginx 搭建环境
  2. 添加端口映射
    2.1 使用window for docker的可以通过kitematic工具给workspace添加映射端口,如图
    image.png

注意:使用kitematic给workspace添加映射端口会导致该容器的containerId重新生成,因此第三步命令执行会失败,参考:https://segmentfault.com/a/1190000008705195 和 https://github.com/docker/kitematic/issues/2190

2.2 修改laradock docker-compose.yml文件workspace的端口配置如下:

ports:
    - "${WORKSPACE_SSH_PORT}:22"
    - "9501:9501"

执行 docker-compose down and docker-compose run -d nginx mysql,也可以映射出9501端口

  1. 进入workspace容器
    3.1 对应上面(2.1)docker exec -it [containerID] bash
    3.2 对应上面(2.2)docker-compose exec workspace bash
  2. 创建server.php
//创建Server对象,监听 127.0.0.1:9501端口
$serv = new swoole_server("0.0.0.0", 9501); 

//监听启动事件
$serv->on('start', function($serv){
    echo "Start \n";
});

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

//监听数据接收事件
$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(); 

此处server监听的是0.0.0.0 不是 127.0.0.1,他们的关系自行了解https://www.jianshu.com/p/ba8abad56ba9

  1. 启动服务器
    php server.php // 如图输出 Start, 代表服务器已经启动
    image.png
  2. 使用telnet连接服务器,并发送些数据查看输出结果
    window下打开命令行窗口
    6.1 输入telnet 127.0.0.1 9501,此时服务端输出Client connect表示有一个客户端连接进来,ctrl+]进入telnet客户端
    6.2 send hello 客户端向服务端发送hello字符串,第一次回车看到消息发送成功,第二次回车看到客户端收到的消息,如图6.3
    6.2

    6.3 客户端收到服务器端发送过来的响应Server:hello
    6.3

    6.4 ctrl+] 继续输入 close命令关闭连接,服务端显示Client:Close
    6.4

telnet下输入?/help可以查看更多telnet相关命令,quit退出telnet命令行,不使用ctrl+]进入telnet终端,直接输入,每个字符都单独进行发送到服务端,服务端单独响应

你可能感兴趣的:(swoole学习第二讲(创建一个TCP服务器))