摘要: 2021年4月写过一个轻量级的web服务器HttpServer,见文章: 《HttpServer:一款Windows平台下基于IOCP模型的高并发轻量级web服务器》,但一直没有时间添加Openssl功能,也就是将HTTP拓展为HTTPS,从而提供安全访问功能。 没时间只是一方面,关键是集成open 阅读全文
posted @ 2022-01-13 11:25 一只会铲史的猫 阅读(471) 评论(1) 推荐(3) 编辑
摘要: 该案例中包含一个基于web网页的前端程序,该案例会使用websocket与IM服务器(imserver)进行通信。 一、环境准备 1、下载 “imserver网页调用案例”,并解压到指定目录。 2、进入“web/js”目录中,使用文本编辑器打开“main.js”文件。 修改websocket的连接地 阅读全文
posted @ 2021-12-27 17:10 一只会铲史的猫 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 如果是编写一个服务器demo,比较简单,只要会socket编程就能实现一个简单C/S程序,但如果是实现一个健壮可靠的服务器则需要考虑很多问题。下面我们看看需要考虑哪些问题。 一、维持心跳 为何要维持心跳,TCP难道不是一个安全可靠的连接么?正常情况下,C端和S端无论是谁掉线,对方都能感知到。从而进行 阅读全文
posted @ 2021-12-24 15:48 一只会铲史的猫 阅读(415) 评论(0) 推荐(6) 编辑
摘要: 05年的时候写了一个邮箱客户端程序。当时主要目的是研究POP3和SMTP协议,同时锻炼自己的网络编程能力。当然了,如果自己写的邮箱客户端能够满足自身的日常工作需要,而不是频繁的登录不同的网页邮箱,那就再好不过了。时隔16年,给popmail增加了SSL(TLS 1.2)会话,感觉安全了一点,邮件再也 阅读全文
posted @ 2021-12-22 11:27 一只会铲史的猫 阅读(1160) 评论(10) 推荐(21) 编辑
摘要: IM服务器要实现的最基本功能就是消息的转发。——好像是一句废话! 这就意味着IM服务器要为每个登录用户创建一个与该用户信息相关的内存上下文,为方便描述我们在这里称之为:user_context。user_context中一般包含这些基本信息:用户id、昵称、peer端的ip和端口,以及最重要的用于通 阅读全文
posted @ 2021-11-02 16:19 一只会铲史的猫 阅读(649) 评论(3) 推荐(2) 编辑
摘要: 一、服务器特点 01、傻瓜式部署,一键式启动; 02、单机支持10万以上在线用户聊天(8G内存,如果内存足够大,并发量可超过10万); 03、支持服务器集群,集群间高内聚、低耦合,可动态横向扩展IM服务器,最大支持200台IM服务器的集群; 04、高并发、高稳定性; 05、支持群组聊天; 06、IM 阅读全文
posted @ 2021-11-01 17:29 一只会铲史的猫 阅读(864) 评论(6) 推荐(3) 编辑
摘要: 编写服务器程序时,需要频繁的申请和释放内存,长时间运行会产生大量的内存碎片,这就导致即使当前系统中的闲置内存还足够多,但也无法申请到大的连续可用的内存块,因为此时的物理内存已经千疮百孔像个马蜂窝。此外,在高并发的情况下频繁的malloc/free也是一笔额外的cpu负担。 如何解决内存碎片呢? 在这 阅读全文
posted @ 2021-09-15 14:55 一只会铲史的猫 阅读(179) 评论(0) 推荐(1) 编辑
摘要: 先看如下两个问题: 问题1、红黑树的键值可以重复么? 问题2、红黑树必须有键值么? 关于红黑树的介绍网上非常多,红黑树的应用也非常广泛。问一下度娘,她会告诉你各种各样的实现方法,C和C++版本都有,linux内核使用的版本也有。代码都大同小异,就是插入或删除时如何修正,如何搞平衡。很多文章图文并茂、 阅读全文
posted @ 2021-09-02 13:56 一只会铲史的猫 阅读(617) 评论(0) 推荐(3) 编辑
摘要: 为何要打印日志?让程序裸奔不是一件很快乐的事么? 有些BUG就像薛定谔的猫,具有波粒二象性,当你试图去观察它时它就消失了,当你不去观察它时,它又会出现。当你在测试人员面前赌咒发誓,亲自路演把程序跑一遍的时候,这些bug就会神奇的消失;一旦离开你的骚操作重新回到测试人员手中,这些bug又会突然的出现。 阅读全文
posted @ 2021-08-24 13:49 一只会铲史的猫 阅读(429) 评论(0) 推荐(2) 编辑
摘要: 历史溯源 由于历史原因,我们目前看到的大部分的网络协议都是基于ASCII码这种纯文本方式,也就是基于字符串的命令行方式,比如HTTP、FTP、POP3、SMTP、Telnet等。早期操作系统UNIX(或DOS),用户操作界面就是控制台,控制台的输入输出方式就决定了用户只能通过敲击键盘的方式将协议命令 阅读全文
posted @ 2021-08-03 11:11 一只会铲史的猫 阅读(448) 评论(2) 推荐(1) 编辑