Libevent实现TCP服务循环监听
目标
建立一个简单的tcp服务,可持续的监听客户端的连接和请求
细节
libevent
stream socket
EV_READ | EV_PERSIST
代码
要义libevent对
stream_socket_server
和stream_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服务循环监听相关推荐
- python tcp不用循环监听_网络编程: TCP
1. IP 地址 概念: 标识网络中设备的地址(需要联网才有没有联网, 是没有这个地址) 表现形式: ipv4 目前主要使用的, 点分十进制的格式,(192.168.3.43) 分为 4 段, 每段的 ...
- Socket编程(C语言实现)——TCP协议(网络间通信AF_INET)的流式(SOCK_STREAM)+报式(SOCK_DGRAM)传输【多线程+循环监听】
Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...
- Socket编程(C语言实现)——UDP协议(进程间通信AF_UNIX)的流式(SOCK_STREAM)+报式(SOCK_DGRAM)传输【循环监听】
Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...
- netstat linux查看监听端口号,linux用netstat查看服务及监听端口
[root@localhost ~]# netstat -nlp netstat命令各个参数说明如下: -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接 ...
- Oracle 命名服务和监听程序
Oracle 命名服务和监听程序 这段时间在做命名服务和监听服务,做异构数据库迁移,从SQL server 2005中到Oracle 10gR2中.对命名服务和监听服务有了了解: 命名服务:conn ...
- linux 下停止监听程序,Linux下启动Oracle服务和监听程序步骤
Linux下启动Oracle服务和监听程序启动和关闭步骤整理如下: 1.安装oracle: 2.创建oracle系统用户: 3./home/oracle下面的.bash_profile添加几个环境变量 ...
- Oracle数据库产重启服务、监听程序命令
Oracle数据库产重启服务.监听程序命令 文章目录 Oracle数据库产重启服务.监听程序命令 前言 一.重启Oracle数据库 总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一.重启 ...
- linux netstat Netstat是在内核中访问网络连接状态及其相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。
在Internet RFC标准中,Netstat的定义是: Netstat是在内核中访问网络连接状态及其相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告. Netstat ...
- oracle 启动 linux监听,Linux下启动Oracle服务和监听程序
$ su – oracle $ sqlplus / nolog sql> conn / as sysdba sql> startup #启动Oracle,需 ...
最新文章
- (转)类库 框架 模式
- python大神-python大神教你在最短时间内学会爬取大规模数据
- 【正一专栏】春日随感—赢在起跑线上
- Java.util包中常用的类
- 现代密码学5.3--Hash and MAC
- 牛客网暑期ACM多校训练营(第三场)A - PAXM Team(01背包)
- 【二分】数列分段(ybtoj 二分-1-1)
- oracle函数大全-字符串处理函数
- java mcv_Spring和SpringMCV配置
- 开辟 Dart 到 Native 的超级通道,饿了么跨平台的最佳实践
- 【转】angularjs指令中的compile与link函数详解
- 惠普1020打印机查看已打印页数
- 如今,我们为什么很难看到高质量的文章?
- Dpark的安装测试
- Studying at SUST
- Game Center,移动游戏社交平台的勘探报告
- C++ 修改防火墙firewall设置(Linux、Ubuntu、CentOS)
- 号称PPT杀手的Prezi
- 初学ROS--joy包学习
- 网站各页面该如何布局关键词优化提升排名?