
高性能服务器编程实现细节详解
实现一套高性能服务器程序涉及到很多的技术细节,这篇专栏将其庖丁解牛,既有整体框架实现的介绍,又有诸如send、recv之类的网络API细节的剖析,最后开源一款即时通讯软件flamingo实战。希望对初、中级网络编程学习者有所帮助。
张小方32
这个作者很懒,什么都没留下…
展开
-
服务器端编程心得(一)—— 主线程与工作线程的分工
服务器端为了能流畅处理多个客户端链接,一般在某个线程A里面accept新的客户端连接并生成新连接的socket fd,然后将这些新连接的socketfd给另外开的数个工作线程B1、B2、B3、B4,这些工作线程处理这些新连接上的网络IO事件(即收发数据),同时,还处理系统中的另外一些事物。这里我们将线程A称为主线程,B1、B2、B3、B4等称为工作线程。工作线程的代码框架一般如下:while原创 2016-11-04 14:04:35 · 11951 阅读 · 15 评论 -
服务器端编程心得(二)—— Reactor模式
最近一直在看游双的《高性能linux服务器编程》一书,下载链接: http://download.csdn.net/detail/analogous_love/9673008书上是这么介绍Reactor模式的: 按照这个思路,我写个简单的练习: /** *@desc: 用reactor模式练习服务器程序,main.cpp *@author: zhangyl...原创 2016-11-24 15:12:36 · 12934 阅读 · 14 评论 -
服务器端编程心得(三)—— 一个服务器程序的架构介绍
本文将介绍我曾经做过的一个项目的服务器架构和服务器编程的一些重要细节。一、程序运行环境操作系统:centos 7.0编译器:gcc/g++ 4.8.3 cmake 2.8.11mysql数据库:5.5.47项目代码管理工具:VS2013一、程序结构该程序总共有17个线程,其中分为9个数据库工作线程D和一个日志线程L,6个普通工作线程W,一个主线程M。(以原创 2016-12-02 00:36:02 · 21829 阅读 · 7 评论 -
服务器编程心得(四)—— 如何将socket设置为非阻塞模式
1. windows平台上无论利用socket()函数还是WSASocket()函数创建的socket都是阻塞模式的:SOCKET WSAAPI socket( _In_ int af, _In_ int type, _In_ int protocol);SOCKET WSASocket( _In_ int af, _In_原创 2016-11-04 13:11:21 · 31502 阅读 · 0 评论 -
服务器编程心得(五)—— 如何编写高性能日志
一、服务器端日志与客户端日志的区别 在正式讲解之前,我们先来看一个日志类的实现方法,这个日志类也是代表中大多数客户端日志的主流写法:/** *@desc: 程序运行log类,log.h *@author: zhangyl *@date: 2017.01.17 **/#ifndef __LOG_H__#define __LOG_H__#ifdef原创 2017-03-07 11:57:32 · 4673 阅读 · 1 评论 -
服务器端编程心得(六)—— 关于网络编程的一些实用技巧和细节
这些年,接触了形形色色的项目,写了不少网络编程的代码,从windows到linux,跌进了不少坑,由于网络编程涉及很多细节和技巧,一直想写篇文章来总结下这方面的心得与经验,希望对来者有一点帮助,那就善莫大焉了。 本文涉及的平台包括windows和linux,下面开始啦。一、非阻塞的的connect()函数如何编写 我们知道用connect()...原创 2017-03-07 16:29:16 · 8267 阅读 · 4 评论 -
服务器端编程心得(七)——开源一款即时通讯软件的源码
在我的《服务器端编程心得》这个系列的第一篇至第六篇都是讲了一些零散的不成体系的网络编程细节。今天,在这篇文章中,我将介绍一款我自主开发的即时通讯软件flamingo(中文:火烈鸟),并开源其服务器和pc客户端代码。以此来对前几篇文章中说到的理论进行实践。 代码在github和csdn.net上各上传了一份:github地址:https://github.com/...原创 2017-04-06 22:57:01 · 64656 阅读 · 27 评论 -
从零实现一个http服务器
我始终觉得,天生的出身很重要,但后天的努力更加重要,所以如今的很多“科班”往往不如后天努力的“非科班”。所以,我们需要重新给“专业”和“专家”下一个定义:所谓专业,就是别人搞你不搞,这就是你的“专业”;你和别人同时搞,你比别人搞的好,就是“专家”。说到http协议和http请求,很多人都知道,但是他们真的“知道”吗?我面试过很多求职者,一说到http协议,他们能滔滔不绝,然后我问他http协议的具...原创 2018-05-18 12:44:42 · 19070 阅读 · 12 评论