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

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

一位10年Java工作经验的架构师聊Java和工作经验

黄勇,从事近十年的 JavaEE 应用开发工作,现任阿里巴巴公司系统架构师。对分布式服务架构与大数据技术有深入研究,具有丰富的 B/S 架构开发经验与项目实战经验,擅长敏捷开发模式。国内开源软件推动者之一,Smart Framework 开源框架创始人。热爱技术交流,乐于分享自己的工作经验。著有《架构探险——从零开始写Java Web框架》一书。我的十年技术之路和大家介绍下我目前所从事的工作。我目...
阅读(150) 评论(0)

客户端软件的结构思考(一)

关于这个标题的内容我思考了很多年,也求索了很多年,每次遇到一份新的质量看起来不错客户端软件的源码时,我总是不自己觉的去学习它和研究它,以期能解决我的困惑,希望能达到我心中“完美”方案的样子。但是直到今天,我仍然没找到所谓的“完美”的答案,但是在这个成长过程中,因为借鉴、融合和吸纳了许多其他的pc软件的设计思想和技巧,我在做pc软件整体结构设计时越来越得心应手。下面是我成长的心路历程,故事很长,太多...
阅读(192) 评论(0)

网络编程难点解析(二)—— TCP之心跳包实现思路

心跳包机制       心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。也有的心跳包中会携带一些需要定期更新的信息。       在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置...
阅读(145) 评论(0)

网络编程难点解析(一) —— 网络异常检查

一、本文目的在涉及网络编程的实际项目应用中,由于网络不可能一直处于理想状态,TCP长连接也可能随时正常或异常地断开,如果不予处理,那么就可能因此而给程序带来很多潜在的问题。 编写该文档的目的就在于针对网络程序中可能遇到的各种问题,拿出来与大家探讨一下具体问题的解决方案,同时本人将前期调研的一些解决方案列出来,抛砖引玉,希望可以集思广益,寻求到更加合理的解决方案。二、网络断开时机1、正常网络断开(1...
阅读(117) 评论(0)

关于std::move和std::forward

这篇文章介绍的真不错:http://www.cnblogs.com/catch/p/3507883.html总结起来:1. std::move是将左值变成右值减少不必要的拷贝;2. std::forward保持一个值的左值和右值特性不变,以变传给既能接受左值又能接受右值的函数,例:template TYPE* acquire_obj(ARG&& arg) { return new TYPE(...
阅读(81) 评论(0)

关于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 ...
阅读(257) 评论(0)

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

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

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

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

DuiLib消息处理剖析

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

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

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

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

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

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

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

开源一款ftp软件——filezilla

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

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

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

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

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

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

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

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

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

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

这篇文章是对TeamTalk服务程序msfs的源码和架构设计分析。msfs作用是用来接受teamtalk聊天中产生的聊天图片的上传和下载。还是老规矩,把该服务在整个架构中的位置图贴一下吧。 可以看到,msfs仅被客户端连接,客户端以http的方式来上传和下载聊天图片。 可能很多同学对http协议不是很熟悉,或者说一知半解。这里大致介绍一下http协议,http协议其实也是一种应...
阅读(3149) 评论(4)
143条 共8页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:148827次
    • 积分:2756
    • 等级:
    • 排名:第14391名
    • 原创:115篇
    • 转载:27篇
    • 译文:1篇
    • 评论:43条
    博客专栏
    最新评论