首页
熊猫办公下载
文件下载
根据地址查询经纬度
登录 / 注册
一级分类:
安全技术
存储
操作系统
服务器应用
行业
课程资源
开发技术
考试认证
数据库
网络技术
信息化
移动开发
云计算
大数据
跨平台
音视频
游戏开发
人工智能
区块链
二级分类:
完成端口(IOCP)高功能服务器源码
最近有项目要做一个高功能网络服务器,决定下功夫搞定完成端口(IOCP),最终花了一个星期终于把它弄清楚了,并用C++写了一个版本,效率很不错。
但,从项目的总体需求来考虑,最终决定上.net平台,因此又花了一天一夜弄出了一个C#版,在这与大家分享。
一些心得体会:1、在C#中,不用去面对完成端口的操作系统内核对象,Microsoft已经为我们提供了SocketAsyncEventArgs类,它封装了IOCP的使用。
请参考:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketasynceventargs.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1。
2、我的SocketAsyncEventArgsPool类使用List对象来存储对客户端来通信的SocketAsyncEventArgs对象,它相当于直接使用内核对象时的IoContext。
我这样设计比用堆栈来实现的好处理是,我可以在SocketAsyncEventArgsPool池中找到任何一个与服务器连接的客户,主动向它发信息。
而用堆栈来实现的话,要主动给客户发信息,则还要设计一个结构来存储已连接上服务器的客户。
3、对每一个客户端不管还发送还是接收,我使用同一个SocketAsyncEventArgs对象,对每一个客户端来说,通信是同步进行的,也就是说服务器高度保证同一个客户连接上要么在投递发送请求,并等待;
或者是在投递接收请求,等待中。
本例只做echo服务器,还未考虑由服务器主动向客户发送信息。
4、SocketAsyncEventArgs的UserToken被直接设定为被接受的客户端Socket。
5、没有使用BufferManager类,因为我在初始化时给每一个SocketAsyncEventArgsPool中的对象分配一个缓冲区,发送时使用Arrary.Copy来进行字符拷贝,不去改变缓冲区的位置,只改变使用的长度,因此在下次投递接收请求时恢复缓冲区长度就可以了!如果要主动给客户发信息的话,可以new一个SocketAsyncEventArgs对象,或者在初始化中建立几个来专门用于主动发送信息,因为这种需求一般是进行信息群发,建立一个对象可以用于很多次信息发送,总体来看,这种花销不大,还减去了字符拷贝和消耗。
6、测试结果:(在我的笔记本上时行的,我的本本是T420I78G内存)100客户100,000(十万次)不间断的发送接收数据(发送和接收之间没有Sleep,就一个一循环,不断的发送与接收)耗时3004.6325秒完成总共10,000,000一千万次访问平均每分完成199,691.6次发送与接收平均每秒完成3,328.2次发送与接收整个运行过程中,内存消耗在开始两三分种后就保持稳定不再增涨。
看了一下对每个客户端的延迟最多不超过2秒。
2020/5/13 2:27:34
15KB
IOCP
完成端口
源码
1
busybox-1.24.1.tar.bz2
BusyBox是一个集成了一百多个最常用linux命令和工具的软件。
BusyBox包含了一些简略的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以..
2016/2/8 23:50:58
1.97MB
busybox
linux
1
简单失物招领PHP源码
失物招领零碎广职院失物招领零碎首页-发布信息-招领信息-遗失信息-后台管理qq"; if(($rs->fabu)=="yishi"){ echo"类别:遗失\n"; }else{ echo"类别:招领\n"; }echo"标题:".$rs->title."\n"; echo"内容:".$rs->info.""; echo"用户名:".$rs->name."-联系QQ:".$rs->qq."-联系电话:".$rs->tel."-发布时间:".$rs->time."\n";}mysql_close();include('foot.php');?>
2021/3/24 20:35:20
21KB
失物招领
1
基于STM32F103ZET6芯片的超声波模块(HC-SR04)源码
基于STM32F103ZET6芯片的超声波模块(HC-SR04)源码。
亲测在战舰版、精英版的误点原子上使用,将PE4于Trig相连,将PE6于Echo相连。
2018/9/12 10:10:53
16.25MB
STM32F103
1
模仿命令解释器MyShell的设计与实现
使用c语言完成了myshell模仿命令解释器,包含ls,pwd,cd,cat,time,date,cp,umane,tac,du,tail,echo,whoami,clear,输出重定向,管道命令等功能。
2021/7/19 2:13:01
1.32MB
模拟命令解释
Linux下
c语言
1
【管理软件】PHP实现高度自定义的微信机器人
环境要求PHP>=7.0PHPfileinfo拓展储存文件需要用到PHPgd拓展控制台显示二维码PHPposix拓展控制台显示二维码(linux)PHP系统命令拓展执行clear命令PHPSimpleXML拓展解析XML安装请确保已经会使用composer!运行微信账号的语言设置务必设置为简体中文!!否则可能出现未知的错误!1、gitgitclonehttps://github.com/HanSon/vbot.gitcdvbotcomposerinstall2、composercomposerrequirehanson/vbot运行正常运行phpexample/index.php带session运行phpexample/index.php--sessionyoursession关于session:带session运行会自动寻找设定session指定的cookies,如不存在则新建一个文件夹位于/tmp/session中,当下次修改代码时再执行就会免扫码自动登录。
如果不设置,vbot会自动设置一个6位的字符的session值,下次登录也可以直接设定此值进行面扫码登录。
PS:运行后二维码将保存于设置的缓存目录,命名为qr.png,控制台也会显示二维码,扫描即可(linux用户请确保已经打开ANSICOLOR)警告!执行前请先查看index.php的代码,注释掉你认为不需要的代码,避免对其他人好友形成困扰请在terminal运行!请在terminal运行!请在terminal运行!目录结构vbotdemo(vbot当前在运行的代码,也欢迎大家提供自己的一些实战例子)example(较为初级的实例)src(源码)tmp(假设缓存目录设置在此)sessionhanson(设定值phpindex.php--sessionhanson)523eb1(随机值)users23534234345(微信账号的UIN值)file(文件)gif(表情)jpg(图片)mp3(语音)mp4(视频)contact.json(联系人debug模式下存在)group.json(群组debug模式下存在)member.json(所有群的所有成员debug模式下存在)official.json(公众号debug模式下存在)special.json(特殊账号debug模式下存在)message.json(消息)体验扫码后,验证输入“echo”即可自动加为好友并且拉入vbot群。
vbot并非24小时执行,有时会因为开发调试等原因暂停功能。
如果碰巧遇到关闭情况,可加Q群492548647了解开放时间。
执行后发送“拉我”即可自动邀请进群。
2015/6/4 16:57:36
3.68MB
PHP
群控制
消息转发
防撤回
1
Centos7安装PostgreSql全自动部署脚本完整版
文件下载后文件如何上传?上传到什么位置?文件下载后解压,然后将解压后的整个目录可上传到Linux系统中的任意位置。
如何开始安装?①使用cd命令进入主目录【postgres-main】;
②执行【chmodu+x./run.sh】;
③执行【./run.sh】便会自动执行数据库安装脚本安装的逻辑是什么?①添加【postgres】用户,数据库安装在postgres用户目录【/home/postgres/disk_d/applications/service/postgresql】路径下,②给新用户授权③解压数据库文件④安装数据库依赖包⑤编译数据库⑥安装数据库⑦修改数据库配置文件⑧启动数据库⑨修改用户密码【p@ssw0rd】⑩开放数据库端口【5432】如何查看已经安装的数据部署安装位置?安装完成后,使用【postgres】用户执行【echo$PGHOME】查看主服务目录,使用【echo$PGDATA】查看数据库数据文件路径。
如何查看数据库已经运转?【lsof-i:5432】详细描述参考地址【http://t.csdn.cn/O1Mt0】
2015/11/6 17:07:42
111.2MB
Cenos7
postgresql
全自动安装脚本
1
钉钉无人值守自动打卡脚本 永不迟到的神器 安卓和苹果教程
New!
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03
15KB
钉钉
钉钉打卡
个人信息
点我去登录or注册
|
微信登录
一言
热门下载
双系统双频伪距单点定位程序
Docker构建tomcat镜像jdk1.8+tomcat9.zip
飘逸传世引擎源代码
中科院考博英语2009-2018年试题及答案解析(十五套436面).pdf
CNS2_CN_VW_P0095D_0332.7z
HTML5+CSS3中文参考手册(3手册)chm版中文参考手册打包
高光谱和LiDAR多模态遥感图像分类数据集
R9390系列BIOS修改和风扇调速工具
ENVI去云补丁Haze_tool文件及其使用说明和安装方法
新升级版TP5商城小程序源码+公众号版+h5一整套源码V3.zip
几何画板课件350套.zip
ABAQUS金属非稳态和稳态切削过程的模拟分析_张东进.pdf
KEPServerEXV6.7.zip
vue项目demo(asp.netmvc5+vue2.5)
吉利新金刚2016款车机导航系统
最新下载
计算机集成安防控制系统的设计和实施
1960年-2024年全球各个国家或地区GDP数据汇总表.xlsx
jeecms相关的所有文档(包括二次开发文档)
C#,串口通信,简洁界面,初学
MFC+OPENCV摄像机标定程序
C#源代码自定义Tabpage控件,tabcontrol控件
将两个升序链表A、B合并到C,并使C成为降序
手把手教你用C#制作RPG游戏__罗培羽著
手把手教你用C#制作RPG游戏素材包.rar
Java电商秒杀系统设计与实现:应对高并发的技术栈应用及优化方案
泼水节礼仪.doc
基础电子中的去耦网络的基本原理
Java中的Timer和TimerTask简介(附完整代码实例)
Java极限编程.part04.rar
教师年终述职报告模板集合八篇_1.docx
其他资源
焓湿图查询计算软件.rar
WS364-2011卫生信息数据元值域代码第17部分:卫生经管.pdf
全景图转视频格式工具V1.1
一种支持隐私保护的加密方法在云存储中的应用
中国统计年鉴2017.zip
匿名四轴app源码
s3c6410简单驱动示例
win10多用户远程桌面支持termsrv.dll10.0.17763.168
山东大学操作系统实验代码
C#简易示波器,图形化显示串口数据
jxl2.612官网最新稳定版本
springmvc+ajax+mybatis前后端整合收藏版
模拟京东首页的源码(html+css)
YT_RV1126_V1_1.DSN
c++windowsapi配置U盘启动以及抑制,读取U盘容量,复制削减删除了盘问U盘数据(文件夹以及文件均能够),读取进程信息
征服python动画演示及源码
DiYunCMS-安装包-V4.3.14-202102270130.zip
蹩脚概念:测试说明-源码
kitti数据pose
sac教程--seisman