一、swoole的安装

参照官网:https://wiki.swoole.com/wiki/page/6.html

二、代码部分

服务端:

<?php

$host = "127.0.0.1";
$port = 9501;
$mode = SWOOLE_PROCESS; // 多进程模式 默认
$sock_type = SWOOLE_SOCK_TCP; // 创建tcp socket 默认
//创建Server对象,监听 127.0.0.1:9501端口
$serv = new swoole_server($host, $port, $mode, $sock_type); $serv->set([
// ps aft | grep php 查看
'worker_num' => 4, // worker进程数 cpu核数的1-4倍
'max_request' => 10000,
]); //监听连接进入事件
/**
* $fd 客户端连接的唯一标识符
* $reactor_id 线程id
*/
$serv->on('connect', function ($serv, $fd, $reactor_id) {
echo "Client: {$fd} - {$reactor_id} - Connect.\n";
}); //监听数据接收事件
$serv->on('receive', function ($serv, $fd, $reactor_id, $data) {
$serv->send($fd, "Server: {$fd} - {$reactor_id} - ".$data);
}); //监听连接关闭事件
$serv->on('close', function ($serv, $fd) {
echo "Client: {$fd} - Close.\n";
}); //启动服务器
$serv->start();

客户端:

<?php
// 连接 tcp server服务器
$client = new swoole_client(SWOOLE_SOCK_TCP);
if (!$client->connect('127.0.0.1', 9501)) {
exit("connect failed. Error: {$client->errCode}\n");
}
// php cli常量
fwrite(STDIN, "请输入消息:");
$msg = trim(fgets(STDOUT));
// 发送消息get tcp server 服务器
$client->send("{$msg}\n");
// 接收来自server的数据
echo $result = $client->recv();
$client->close();

也可通过 命令行:

# telnet 127.0.0.1 9501

进行测试

swoole之建立 tcp server的更多相关文章

  1. 基于 LWIP 建立 TCP Server 与主机通信实验

    LWIP 版本:2.0.3 上一篇文章是写如何将 LWIP 移植到板子上,今天晚上记录基于 LWIP 实现与主机的网络通信. 先是打开了原子的实验例程,大概浏览了一遍,觉得 TCP 网络网络通信也就是 ...

  2. swoole之建立 websocket server

    一.代码部分 <?php /** * 为什么用WebSocket? * HTTP的通信只能由客户端发起 * * WebSocket 协议是基于TCP的一种新的网络协议.实现了浏览器与服务器全双工 ...

  3. swoole之建立 http server

    一.代码部分 <?php /** * 传统:nginx <-> php-fpm(fast-cgi process manager) <-> php * swoole:ht ...

  4. ESP8266开发之旅 网络篇⑦ TCP Server & TCP Client

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  5. swoole深入学习 2. tcp Server和tcp Client

    这节来学习Swoole最基础的Server和Client.会通过创建一个tcp Server来讲解. server <?php class Server { private $serv; pub ...

  6. TCP server 为什么一个端口可以建立多个连接?

    https://segmentfault.com/q/1010000003101541 如果是tcp client用同一个本地端口去连不同的两个服务器ip,连第二个时就会提示端口已被占用.但服务器的监 ...

  7. Swoole系列(三):建立TCP服务器并发送数据测试

    <?php // 建立tcp服务器下 $host = '0.0.0.0'; $port = 9501; $serv = new swoole_server($host,$port); $serv ...

  8. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

    以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...

  9. 为什么建立TCP连接需要三次握手,为什么断开TCP连接需要四次握手,TIME_WAIT状态的意义

    为什么建立TCP连接需要三次握手? 原因:为了应对网络中存在的延迟的重复数组的问题 例子: 假设client发起连接的连接请求报文段在网络中没有丢失,而是在某个网络节点长时间滞留了,导致延迟到达ser ...

随机推荐

  1. 卷积神经网络(CNN)_相关知识

    斯坦福公开课 CS231n Convolutional Neural Networks for Visual Recognition : http://cs231n.stanford.edu/syll ...

  2. 【PAT甲级】1040 Longest Symmetric String (25 分)(cin.getline(s,1007))

    题意: 输入一个包含空格的字符串,输出它的最长回文子串的长度. AAAAAccepted code: #define HAVE_STRUCT_TIMESPEC #include<bits/std ...

  3. 01-JAVA语言基础(动手动脑)

    一.一个JAVA类文件中只能有一个public类吗? 01-JAVA语言基础.ppt第22页“一个Java源文件中可以写多个类,但其中只能有一个类是“公有(public)”的,并且Java要求源文件名 ...

  4. SqlService 并发测试

    使用Sql QueryStress 可输入需要的线程数量,执行次数,对SQL 语句或存储过程进行测试,可查看执行时间及资源耗用.

  5. ZkApi的方法跨域访问ZkResource的静态资源文件出现的问题

    问题:ZkApi的方法跨域访问ZkResource的静态资源文件出现下面的情况 解决方法: cd /usr/local/apache/conf/vhost vim .conf 将上面的文件php_ad ...

  6. git pull 之后怎么找回别覆盖掉的内容

    [半夜吓出冷汗,git这个原理还真得好好学学] 不小心把本地写的东西pull了下,然后,全部覆盖掉了,以为就这样没了. 后面想到有“时光穿梭机”,“历史回滚”,在各大群友的帮助下,终于找回了. git ...

  7. ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.

    将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数 HDFS_NAMENODE_USER=root HDFS_DATANODE_USER=root HDFS_SECONDARY ...

  8. 【转载】 NVIDIA Tesla/Quadro和GeForce GPU比较

    原文地址: https://blog.csdn.net/m0_37462765/article/details/74394932 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议 ...

  9. Mayor's posters-POJ2528 区间染色+离散化

    题意: 在一面长度为10000000 的墙上贴广告,告诉你每张海报的l,r(1 <= li <= ri <= 10000000.),让你求最后有几张海报露出来 链接:http://p ...

  10. 吴裕雄--天生自然ORACLE数据库学习笔记:常用SQL*Plus命令

    set pause on set pause '按<enter>键继续' select user_id,username,account_status from dba_users; sh ...