[置顶] 服务器端编程心得(七)——开源一款即时通讯软件的源码

在我的《服务器端编程心得》这个系列的第一篇至第六篇都是讲了一些零散的不成体系的网络编程细节。今天,在这篇文章中,我将介绍一款我自主开发的即时通讯软件flamingo(中文:火烈鸟),并开源其服务器和pc客户端代码。以此来对前几篇文章中说到的理论进行实践。        代码在github和csdn.net上各上传了一份: github地址:  服务器端代码地址:https://github....
阅读(3090) 评论(9)

关于C++11中的std::XXX<void>

一般常见的有:std::sharedstd::weak_ptrstd::unique_ptrstd::function第一个、第二个和第三个的意思是:make a smart pointer which can point to many different types of data structures like structs, vectors, matrices... basically ...
阅读(62) 评论(0)

关于std::bind绑定栈变量对象的思考

我一直以为std::bind函数在给某个函数绑定参数时,如果参数是栈变量,且是类对象,等实际调用std::bind函数时,因为传递的栈变量参数已经不存在了,会导致程序崩溃,但实际上并不是这样,看代码:#include #include class A { public: A() { k = 11; std::cout << "A constru...
阅读(62) 评论(0)

Java服务器与客户端通信框架初探

这篇文章中,我们讲述一下用Java实现网络通信的的基本流程,这里讲述的是不基于任何框架的原生语言自带的写法。Java服务器端写法:程序入口代码如下:public static void main(String[] args) { try { // ① 创建一个线程 等其他客户端的连接 final ServerSocket server = new ServerSocket(8090); ...
阅读(142) 评论(0)

win32程序显示网页

说是win32,实际程序中使用了atl的东西。所以新建win32程序时,记得勾选使用atl:代码如下:#include "stdafx.h" #include "Win32Project3.h" #include CComModule _Module; #include //#pragma comment(lib,"atl.lib") #include #define MAX_LOA...
阅读(112) 评论(0)

DuiLib消息处理剖析

文章来源:http://blog.csdn.net/zhuhongshu/article/details/41725657分为几个大部分:控件容器(本质也是控件)UI构建解析器(XML解析)窗体管理器(消息循环,消息映射,消息处理,窗口管理等)渲染引擎DuiLib 消息循环剖析DuiLib的消息循环非常灵活,但不熟悉的可能会觉得非常混乱,不知道该如何下手。所以,我总结了下DuiLib的各种消息响应...
阅读(138) 评论(0)

开源一款资源分享与下载工具 —— 电驴(eMule)

这里分享一款资源分享与下载工具——电驴,其实严格来说,应该叫电骡,这是我维护的版本,eMuleVeryCD版本,VeryCD是一个不错的资源分享网站:http://www.verycd.com/。大概在08年之前,中国市场流行的下载工具大概有三款:网际快车(flashget)、电驴(eMule)和迅雷,后来前两者都没落了。电驴的源码也开源了,迅雷抓住这个机会分析了电驴的下载协议(Kademlia)...
阅读(387) 评论(0)

关于windows完成端口(IOCP)的一些理解

本人很多年前接触完成端口以来,期间学习和练习了很多次,本以为自己真正地理解了其原理,最近在看网狐的服务器端源码时又再一次拾起完成端口的知识,结果发现以前理解的其实很多偏差,有些理解的甚至都是错误的。网络上关于windows完成端口的介绍举不胜举,但大多数都是介绍怎么做,而不是为告诉读者为什么这么做。看了很多篇小猪的讲解:http://blog.csdn.net/piggyxp/article/de...
阅读(343) 评论(2)

TeamTalk源码分析(十一) —— pc客户端源码分析

——写在前面的话        在要不要写这篇文章的纠结中挣扎了好久,就我个人而已,我接触windows编程,已经六七个年头了,尤其是在我读研的三年内,基本心思都是花在学习和研究windows程序上了。我很庆幸我当初学习windows程序走了一条正确的路线:先是学习常用的windows程序原理和基本API,再学习的mfc、wtl等一些常用的框架和类库,同时看了大量windows项目的源码,如金山卫...
阅读(2294) 评论(5)

开源一款ftp软件——filezilla

filezilla是一款高性能ftp/sftp文件工具,关于它的具体的介绍可参见其官网:https://www.filezilla.cn/。其原作者是Tim Kosse (tim.kosse@filezilla-project.org)。大概10年前我从校园网ftp资源时无意中接触到这款软件的客户端之后,其强大的功能和流畅的性能让我一直使用至今。即使在今天,我的开发环境已经换成Linux,我仍然使...
阅读(312) 评论(0)

高性能高并发服务器架构设计探究——以flamigo服务器代码为例

这篇文章我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序。        所谓高性能就是服务器能流畅地处理各个客户端的连接并尽量低延迟地应答客户端的请求;所谓高并发,指的是服务器可以同时支持多的客户端连接,且这些客户端在连接期间内会不断与服务器有数据来往。      这篇文章将从两个方面来介绍,一个是服务器的框架,即单个服务器程序的代码组织结构;另外一个是一组服务程序的...
阅读(2796) 评论(0)

开源一款远程控制软件 —— pcshare

这里开放一款远程控制软件的源码——pcshare,该软件分为被控制端和控制端。部分界面如下:控制端通过寄生在被控制端的后台程序来实现控制,可以对被控制台进行文件管理、屏幕监控、键盘监控、监控管理、查看被控制端的服务和注册表,甚至是控制被控制端的摄像头。一、软件使用方法介绍:1. 启动PcShare.exe,这是控制端主程序,该程序会在8080端口上监听被控制端的连接。2. 生成被控制端宿主程序,点...
阅读(1321) 评论(2)

git配置ssh key并从github.com拉取repos

一、配置ssh key1. 进入当前用户目录cd ~2. 生成ssh keyssh-keygen -t rsa -C "ABC@qq.com"ABC@qq.com账号必须是你登录github的账户名中间如果提示文件已经存在可以选择覆盖,提示输入密码,可以直接按Enter跳过。$ ssh-keygen -t rsa -C "ABC@qq.com" Generating public/private...
阅读(387) 评论(0)

TeamTalk源码分析(十) —— 开放一个TeamTalk测试服务器地址和几个测试账号

由于TeamTalk是用于企业内部的即时通讯软件,一般客户端并不提供账号注册功能。如果你仅对TeamTalk的客户端感兴趣,你可以仅仅研究pc端和移动端代码。官方的测试服务器地址已经失效,所以我已经部署了一套TeamTalk服务器,并建立了几个测试账户可以供你使用:tangsengsunwukongzhubajieshaseng==================xiaowangxiaomingx...
阅读(1081) 评论(3)

TeamTalk源码分析(九) —— 服务器端route_server源码分析

route_server的作用主要是用户不同msg_server之间消息路由,其框架部分和前面的服务类似,没有什么好说的。我们这里重点介绍下它的业务代码,也就是其路由细节:void CRouteConn::HandlePdu(CImPdu* pPdu) { switch (pPdu->GetCommandId()) { case CID_OTHER_HEARTBEAT: ...
阅读(919) 评论(0)

TeamTalk源码分析(八) —— 服务器端file_server源码分析

这篇文章我们来介绍file_server服务的功能和源码实现。TeamTalk支持离线在线文件和离线文件两种传送文件的方式。单纯地研究file_server的程序结构没多大意义,因为其程序结构和其他几个服务结构基本上一模一样,前面几篇文章已经介绍过了。 我们研究teamtalk的file_server是为了学习和借鉴teamtalk的文件传输功能实现思路,以内化为自己的知识,并加以应用。     ...
阅读(838) 评论(0)

TeamTalk源码分析(七) —— 服务器端msf源码分析

这篇文章是对TeamTalk服务程序msfs的源码和架构设计分析。msfs作用是用来接受teamtalk聊天中产生的聊天图片的上传和下载。还是老规矩,把该服务在整个架构中的位置图贴一下吧。 可以看到,msfs仅被客户端连接,客户端以http的方式来上传和下载聊天图片。 可能很多同学对http协议不是很熟悉,或者说一知半解。这里大致介绍一下http协议,http协议其实也是一种应...
阅读(2822) 评论(4)

WinInet使用详解

WinInet是windows平台对socket进行一层封装,用来直接处理http/ftp/Gopher协议的一套windows API。我第一次接触这个是在一个客户那里,当时因为客户都需要使用http代理才能浏览网页,所以折腾了一天,才基本掌握。而时隔没多久又忘记的差不多了,这个流程就像正则表达式一样,常学常忘,常忘常学。而网络上流传的WinInet代码实例,不是编译不通过,就是粗制滥造。因此现...
阅读(539) 评论(0)

TeamTalk源码分析(六) —— 服务器端login_server源码分析

login_server从严格意义上来说,是一个登录分流器,所以名字起的有点名不符实。该服务根据已知的msg_server上的在线用户数量来返回告诉一个即将登录的用户登录哪个msg_server比较合适。关于其程序框架的非业务代码我们已经在前面的两篇文章《TeamTalk源码分析(四) —— 服务器端db_proxy_server源码分析》和《TeamTalk源码分析(五) —— 服务器端ms...
阅读(874) 评论(0)

TeamTalk源码分析(五) —— 服务器端msg_server源码分析

在分析msg_server的源码之前,我们先简单地回顾一下msg_server在整个服务器系统中的位置和作用: 各个服务程序的作用描述如下: LoginServer (C++): 负载均衡服务器,分配一个负载小的MsgServer给客户端使用MsgServer (C++): 消息服务器,提供客户端大部分信令处理功能,包括私人聊天、群组聊天等RouteServer (...
阅读(1011) 评论(0)

TeamTalk源码分析(四) —— 服务器端db_proxy_server源码分析

从这篇文章开始,我将详细地分析TeamTalk服务器端每一个服务的源码和架构设计。这篇从db_proxy_server开始: db_proxy_server是TeamTalk服务器端最后端的程序,它连接着关系型数据库mysql和nosql内存数据库redis。其位置在整个服务架构中如图所示: 我们从db_proxy_server的main()函数开始,main()函数其实就是做...
阅读(1000) 评论(0)
139条 共7页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:124414次
    • 积分:2463
    • 等级:
    • 排名:第15539名
    • 原创:111篇
    • 转载:27篇
    • 译文:1篇
    • 评论:39条
    博客专栏
    最新评论