目标

建立一个简单的tcp服务,可持续的监听客户端的连接和请求

细节

  1. libevent

  2. stream socket

  3. EV_READ | EV_PERSIST

代码

要义libevent对stream_socket_serverstream_socket_accept产生的资源进行监听

<?php
/**
* tcp 服务 socket连接
*/
$base = event_base_new();
$event = event_new();
// 创建一个socket服务
$serv = stream_socket_server('0.0.0.0:8080');
// 设置对这个socket的事件监听,监听可持续读
event_set($event, $serv, EV_READ|EV_PERSIST, 'server_connect',[$event,$base]);
event_base_set($event, $base);
event_add($event);
// 事件循环监听
event_base_loop($base);function server_connect($fd,$flags,$args) {$event = $args[0];$base = $args[1];echo "client connect...\n";// 接收socket连接$socket = stream_socket_accept($fd);$new_base = event_base_new();$new_event = event_new();// 对该连接进行监听,注意此处,如果建立了连接不对其进行accpet,那么将持续循环event_set($new_event,$socket,EV_READ|EV_PERSIST,'get',[$new_event,$new_base]);event_base_set($new_event,$new_base);event_add($new_event);event_base_loop($new_base);
}function get($fd,$flags,$args) {// 如果连接可读,读取内容$buffer = fread($fd, 10000);echo "client send:$buffer\n";// 发送给客户端内容fwrite($fd,'Server:i have got your words -'.$buffer."\n");}

Libevent实现TCP服务循环监听相关推荐

  1. python tcp不用循环监听_网络编程: TCP

    1. IP 地址 概念: 标识网络中设备的地址(需要联网才有没有联网, 是没有这个地址) 表现形式: ipv4 目前主要使用的, 点分十进制的格式,(192.168.3.43) 分为 4 段, 每段的 ...

  2. Socket编程(C语言实现)——TCP协议(网络间通信AF_INET)的流式(SOCK_STREAM)+报式(SOCK_DGRAM)传输【多线程+循环监听】

    Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...

  3. Socket编程(C语言实现)——UDP协议(进程间通信AF_UNIX)的流式(SOCK_STREAM)+报式(SOCK_DGRAM)传输【循环监听】

    Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...

  4. netstat linux查看监听端口号,linux用netstat查看服务及监听端口

    [root@localhost ~]# netstat -nlp netstat命令各个参数说明如下: -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接 ...

  5. Oracle 命名服务和监听程序

    Oracle 命名服务和监听程序 这段时间在做命名服务和监听服务,做异构数据库迁移,从SQL server 2005中到Oracle 10gR2中.对命名服务和监听服务有了了解: 命名服务:conn ...

  6. linux 下停止监听程序,Linux下启动Oracle服务和监听程序步骤

    Linux下启动Oracle服务和监听程序启动和关闭步骤整理如下: 1.安装oracle: 2.创建oracle系统用户: 3./home/oracle下面的.bash_profile添加几个环境变量 ...

  7. Oracle数据库产重启服务、监听程序命令

    Oracle数据库产重启服务.监听程序命令 文章目录 Oracle数据库产重启服务.监听程序命令 前言 一.重启Oracle数据库 总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一.重启 ...

  8. linux netstat Netstat是在内核中访问网络连接状态及其相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

    在Internet RFC标准中,Netstat的定义是: Netstat是在内核中访问网络连接状态及其相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告. Netstat ...

  9. oracle 启动 linux监听,Linux下启动Oracle服务和监听程序

    $ su – oracle $ sqlplus / nolog sql> conn / as sysdba sql> startup                 #启动Oracle,需 ...

最新文章

  1. (转)类库 框架 模式
  2. python大神-python大神教你在最短时间内学会爬取大规模数据
  3. 【正一专栏】春日随感—赢在起跑线上
  4. Java.util包中常用的类
  5. 现代密码学5.3--Hash and MAC
  6. 牛客网暑期ACM多校训练营(第三场)A - PAXM Team(01背包)
  7. 【二分】数列分段(ybtoj 二分-1-1)
  8. oracle函数大全-字符串处理函数
  9. java mcv_Spring和SpringMCV配置
  10. 开辟 Dart 到 Native 的超级通道,饿了么跨平台的最佳实践
  11. 【转】angularjs指令中的compile与link函数详解
  12. 惠普1020打印机查看已打印页数
  13. 如今,我们为什么很难看到高质量的文章?
  14. Dpark的安装测试
  15. Studying at SUST
  16. Game Center,移动游戏社交平台的勘探报告
  17. C++ 修改防火墙firewall设置(Linux、Ubuntu、CentOS)
  18. 号称PPT杀手的Prezi
  19. 初学ROS--joy包学习
  20. 网站各页面该如何布局关键词优化提升排名?

热门文章

  1. 阿里巴巴为什么不建议直接使用 Async 注解?
  2. 都2021年了,你还在用Jenkins?赶快看看这些替代方案吧!
  3. Service 层和 Dao 层有必要为每个类都加上接口吗?
  4. 咱们从头到尾说一次 Java 垃圾回收
  5. 深入理解Ribbon之源码解析
  6. 【廖雪峰python进阶笔记】定制类
  7. 搜索算法,一触即达:GitHub上有个规模最大的开源算法库
  8. 3行代码就能可视化Transformer的奥义 | 开源
  9. 这所211高校通知不放寒假!校园将实行封闭管理!
  10. 曾经的全国重点大学,如今表现如何?2020年最新排名出炉!