创建一个TCP server
以下操作默认你已经掌握了laradock的基本使用
- 在laradock目录下执行
docker-compose up -d mysql nginx
搭建环境 - 添加端口映射
2.1 使用window for docker
的可以通过kitematic
工具给workspace添加映射端口,如图
注意:使用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端口
- 进入workspace容器
3.1 对应上面(2.1)docker exec -it [containerID] bash
3.2 对应上面(2.2)docker-compose exec workspace bash
- 创建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
,他们的关系自行了解//www.greatytc.com/p/ba8abad56ba9
- 启动服务器
php server.php
// 如图输出 Start, 代表服务器已经启动
- 使用telnet连接服务器,并发送些数据查看输出结果
window下打开命令行窗口
6.1 输入telnet 127.0.0.1 9501
,此时服务端输出Client connect
表示有一个客户端连接进来,ctrl+]
进入telnet客户端
6.2send hello
客户端向服务端发送hello
字符串,第一次回车看到消息发送成功,第二次回车看到客户端收到的消息,如图6.3
6.3 客户端收到服务器端发送过来的响应Server:hello
6.4ctrl+]
继续输入 close命令关闭连接,服务端显示Client:Close
telnet下输入
?/help
可以查看更多telnet相关命令,quit
退出telnet命令行,不使用ctrl+]
进入telnet终端,直接输入,每个字符都单独进行发送到服务端,服务端单独响应