公开封尘已久的即时通讯源码

看到最近有人研究IM,把以前的东西翻出来了,供想学习这方面的研究研究

通讯协议UDP,聊天方式点对点(P2P)

此项目简单实现了早期QQ的基本功能

  1. 文字聊天
  2. 表情,图片发送
  3. 发送离线消息,图片
  4. 在线/离线,文件传送
  5. 上传自定义头像
  6. 群功能
  7. 语音、视频聊天
  8. 天气预报
  9. 自定义选项卡
  10. 截图功能

理论上功能是实现了,但是在NAT穿透上有问题,所以P2P有时不能成功,所以在外网,只是一个玩具而已

客户端运行截图

涉及到的技术

网络通讯

  1. 消息序列化,加密
  2. 数据传输 协议定义,消息分块发送,消息完整性判断和重复发送,SOKET5代理
  3. NAT穿透,俗称打洞
  4. 消息缓存/转发

DOC里有之前画的流程图,用Diagram Designer打开

界面互动

  1. 窗体互动
  2. 界面绘制
  3. 换肤

RTF文本处理

  1. 字体大小颜色控制
  2. RTF图片提取发送

编译好的客户端,能连上测试服务器,需要先注册账号

http://119.10.29.11:8081/SinoTalk.rar

有不明白的欢迎留言讨论

项目说明

请勿将此程序用于商业用途,以免产生不必要的纠纷,仅供学习,参考 开发时间2010年,比较久远,有很多问题 请关注我的新项目CRL快速开发框架 http://www.cnblogs.com/hubro/p/4288047.html 当前项目客户端编译运行即可连上测试环境服务器(随后可能关闭) 测试服务器地址 http://119.10.29.11:8081/ 账号由此注册 项目划分   CLient 客户端   Comm 公共方法   DuoDuo 启动程序   IpcChannelObj 服务控制台通讯对象   Server 服务主程序   SinoTalkServerConsole 服务控制台   SinoTalkService 服务程序(在参数配置主程序路径)   SinoTalkWeb 网站接口(为避免纠纷,未公开,请参考网上示例)   Update 升级程序   ServerSetup 服务安装程序   数据库(为避免纠纷,未公开) 此项目原始版本为较老的.NET2.0/3.5开发测试时按实际情况调整生成环境 端口地址更改   服务器端口   SinoTalk.Comm.P2PConsts.SERVER_UDP_PORT=2280   客户端服务器地址绑定   SinoTalk.Client.ClientConsts._SERVER_ADDRESS="119.10.29.11" Activex控件注册   语音和视频为Activex控制,需要先注册才能编译通过   DEBUG目录有注册文件   regsvr32 "aocx2.ocx"   regsvr32 "Vocx.ocx"   regsvr32 "ImageOle.dll"

项目下载地址: 链接: http://pan.baidu.com/s/1kTst3H9  (重新修改了)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网杂技

再谈前后端分离

前言 前后端分离已经是业界所共识的一种开发/部署模式了。所谓的前后端分离,并不是传统行业中的按部门划分,一部分人纯做前端(HTML/CSS/JavaScript...

3968
来自专栏云瓣

用 Node.js 把玩一番 Alfred Workflow

作为 Mac 上常年位居神器榜第一位的软件来说,Alfred 给我们带来的便利是不言而喻的,其中 workflow(工作流) 功不可没,在它上面可以轻松地查找任...

4543
来自专栏信安之路

锁首技术总结

在公司实习也有一个月了,学到不少东西,不知不觉就要大四了,回首漫漫安全路,不禁感慨万千:我入安全的时间比较晚,大一大二跟着老师参加 Android 移动应用开发...

1272
来自专栏魏艾斯博客www.vpsss.net

更换 sitemap 插件为 Google XML Sitemaps 及相关设置过程

2432
来自专栏web编程技术分享

简单粗暴,详细得不要不要的 JavaWeb快速入门

4019
来自专栏Android群英传

Siri 帮我开灯

1122
来自专栏非著名程序员

基于开源项目搭建属于自己的技术堆栈

? 在技术面试的时候肯定都会问到使用了哪些第三方框架,为什么使用它而不用其他的。身边朋友就有这样的亲身经历: 面试官:你们项目中加载图片都是用的什么框架? 面...

2647
来自专栏FreeBuf

Python渗透测试工具都有哪些?

如果你热爱漏洞研究、逆向工程或者渗透测试,我强烈推荐你使用 Python 作为编程语言。它包含大量实用的库和工具,本文会列举其中部分精华。 网络 Scapy, ...

5158
来自专栏熊二哥

Linux快速入门01-基础概念

4年多前,刚到上海时报过一个关于Oracle的培训班,在那里接触到了Linux,不过一直都没真正去试着使用它。现在经过慢慢的成长,越来越觉得,Linux是每一个...

2325
来自专栏阮一峰的网络日志

网站开发人员应该知道的61件事

通常情况下,你需要把所有人的发言从头到尾读一遍。但是,Stack Overflow有一个很贴心的设计,它允许在问题下方开设一个wiki区,让所有人共同编辑一个最...

1674

扫码关注云+社区

领取腾讯云代金券