zhuweisky

君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。

ESFramework,基于.NET的通信框架。DataRabbit,轻量的数据访问框架。Strive,游戏引擎。sky.zhuwei@163.com
posts - 196, comments - 1329, trackbacks - 101, articles - 1
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

AgileIM 源码公开

Posted on 2006-03-06 10:04 zhuweisky 阅读(7675) 评论(43)  编辑 收藏 网摘 所属分类: C#专栏
    前文已经提到AgileIM只是用于我的通信框架ESFramework测试的客户端,AgileIM 如今已经支持的主要功能:
(1)文字聊天
(2)文件传输
(3)视频/音频聊天
(4)基于Udp的NAT/NAPT 穿透

    IM类型的软件所需要的框架的能力大致也在这里了,现在把AgileIM的源码开放,希望能对后来者有些许帮助,当然,服务端通信框架的源码时不开放的。即使如此,你也可以从AgileIM中学到:
(1)如何与服务器进行通信、客户端基于Tcp的通信框架的特点
(2)如何组织通信消息/协议
(3)如何进行视频/音频捕捉
(4)多线程
(5)如何使用ESFramework框架的ESFramework.Network.Tcp.Passive空间

    AgileIM基于ESFramework构建,使用VS2005开发,代码并不是很多(因为很多能力已经在ESFramework框架中实现),组件装配/IOC使用了Spring框架,数据访问层使用了XCodeFactory
    测试登录帐号: 100000 ,密码: 111111
                             110000 ,密码: 111111
                             111000 ,密码: 111111

    我相信,每个人都可以开发自己的QQ和MSN!

   点击这里下载AgileIM源码。

Feedback

#1楼    回复  引用  查看    

2006-03-06 10:12 by 雁儿飞飞      
不错
只可惜是2.0的
没装框架,运行不了
以后好好研究研究

#2楼    回复  引用  查看    

2006-03-06 10:31 by Shooper .NET      
谢谢分享,学习

#3楼    回复  引用    

2006-03-06 11:35 by 小黄叶 [未注册用户]
人的思想道德修养,人的素质与人的文化是不能成比例的。

#4楼    回复  引用  查看    

2006-03-06 11:55 by lrq      
下载不了,兄弟

#5楼    回复  引用  查看    

2006-03-06 12:38 by 天生这样      
有点郁闷的是只提供了客户端的代码,其它一些框架代码都没有,只有DLL

#6楼    回复  引用    

2006-03-06 13:31 by lovebanyi [未注册用户]
正要学习视频和音频的.这样的有代码的话就好了..

#7楼    回复  引用  查看    

2006-03-06 16:50 by Beginor      
音频和视频捕获在CodeProject上看过(DShowNet以及那个Captrue类),而且是开源的,需要的朋友可以去www.codeproject.com上找。

顺便鄙视一下楼主!:)开源的东西,应该继续开源流传下去,不要占为己有。

#8楼 [楼主]   回复  引用  查看    

2006-03-06 17:13 by zhuweisky      
@Beginor:
呵呵,你说的严重了,我并没有把 “DShowNet以及那个Captrue类”据为己有,只是EnterpriseServerBase.dll 这个是我自己开发的,源码不公开。
AgileIM中 告诉了后来者如何使用Captrue类。

#9楼    回复  引用  查看    

2006-03-06 18:58 by 淹不死的鱼asp.net开发专栏      
http://www.718.com.cn
轻松构建.net应用,
Asp.net空间只需155元/年。
磁盘空间: 50M
MS SQL数据库空间: 20M
支持: ASP.net、ASP
FTP管理
流量无限制
P4 2.0G以上CPU 2G内存
硬盘2*73G 操作系统: Windows2003
千兆光纤接入,百兆独享宽带
7×24小时全网监控系统,千兆防火墙系统、防攻击设备
网通/电信

查看更多虚拟主机请点击http://www.718.com.cn有更多款式配置适合你的需求。

#10楼    回复  引用  查看    

2006-03-06 19:02 by 雁儿飞飞      
@zhuweisky

非常感谢您的开源精神
但是遗憾的是您的EnterpriseServerBase.dll 代码不公开

我也看拉这个dll确实写的不容易
针对EnterpriseServerBase.dll 就反编译c#源代码一份:
下载地址:
http://www.cnblogs.com/Files/overred/EnterpriseServerBase_Source.rar

郑重说明:

经过IL成高级语言(C#)多多少少会与原代码有区别,所以这并不算什么违法行为,同时也是为拉广大朋友的方便!但是层次结构已经分布到各个文件夹和.cs里,起码比用Reflector要舒服点。(在1下完成,并未做任何测试,错误不可避免,想要正确的还是等楼主开源吧)

^_^
开源吧,上帝

#11楼    回复  引用  查看    

2006-03-07 13:57 by smalldust      
呵呵,对作者最后那句话不大理解:人人都能开发自己的QQ和MSN?
不知道人人都开发出自己的QQ和MSN来干嘛用啊?那不正与IM的意义相反吗?

另外,恕我直言,开发一个IM Client简直是容易至极(或者换句话说,没有什么技术含量),IM的技术精粹,是在服务器端。举个例子,服务器的可扩展性(一个IM Server要支持成千上万的并发连接,但是这一点恐怕就不得不用IOCP等技术吧?)此外,从数据库的角度来看,一个高效的IM Server还要使用分布式的数据库,并且对于冗余和备份的规划要做到万无一失。从某种角度来说,IM Server正是对上层架构技术和下层代码技术要求都非常高的一个开发项目。

因此,如果作者真正开发出了一个实用的IM Server,那我相信其源代码是非常值得一看的。如果作者开发的只是一个Asynchorous Socket的IM Server,最多支持2000多个并发连接的Server,那其实并没有什么意义。

对了,我的毕业设计就是IM服务器与客户端的实现。

#12楼    回复  引用  查看    

2006-03-07 14:06 by smalldust      
刚才说的并没有藐视作者辛勤劳动的意思。

的确作为IM Client其实现原理很简单,但是就连一个“计算器”程序,都可以做得很复杂。我没有下载作者的源代码,不知道他具体是否也花了很多心思,做得很精细。

我所说的“简单”,是作者举出的他所用到的技术。举例来说“(4)基于Udp的NAT/NAPT 穿透”,开一个UPnP隧道在.Net中只需要下面两句(当然不包括任何错误处理)

UPnPNAT uPnPNat = new UPnPNAT();
uPnPNat.StaticPortMappingCollection.Add(intExternalPort, strProtocol, intInternalPort, strLocalIP, true, strDescription);

当然,作者设计并实现了其IM系统特有的协议栈等等,这些都是比开UPnP隧道了不起的多的事情。因此我觉得大家学习的时候,主要不是学习怎么控制摄像头、怎么开UPnP,而是作者的架构设计、协议栈设计等等。

#13楼 [楼主]   回复  引用  查看    

2006-03-07 15:19 by zhuweisky      
非常感谢这么多人的关注!
其实 服务端框架的核心内容已经在我的前面的文章中浮出水面,特别是这两篇:
.NET平台下可复用的Tcp通信层实现(http://zhuweisky.cnblogs.com/archive/2006/01/04/310814.html
.NET平台下可复用的Tcp通信层实现(续) (http://zhuweisky.cnblogs.com/archive/2006/01/05/311364.html

开放AgileIM的源码,只是想给后来者起个抛砖引玉的作用,对初学者有些许指导就是我所有的目的。
呵呵,我写blog并没有抱着“文不惊人死不休”的态度,我也没这个能力:)

我说“人人都能开发自己的QQ和MSN”,意思是说,QQ和MSN这样的软件并不神秘,所有有开发IM愿望的人通过些许努力皆可达成。当然,正如smalldust所说,IM的精髓在其服务器端,要做一个专业的IM软件,确实有许多事情要做。
在熟悉了NAT的原理之后,实现NAT非常简单,但是对于一个没有接触过NAT概念的人,恐怕就不是那么容易了。

踏踏实实做点事、少点狂妄、少点埋怨、多点知足,这是我生活的体会!


#14楼    回复  引用  查看    

2006-03-10 09:01 by ζ浮云¢惊龙      
D. @_@ :-)
我想问问作者,客户端和服务器端的命令行是如何传递的呢,谢谢。

#16楼    回复  引用    

2006-03-10 14:45 by zhuweisky1 [未注册用户]
@露雨城市.NET2.0和Sql Server 2005开发研究
命令行 只是一类客户端与服务器通信的特殊的消息,它与普通消息的结构一样

#17楼    回复  引用  查看    

2006-03-16 22:03 by A.Z      
谢谢

#18楼    回复  引用    

2006-03-25 15:51 by kudoo [未注册用户]
请问, 为什么解压后就一个文件,而且还识别不了.

#19楼    回复  引用    

2006-03-25 16:09 by kudoo [未注册用户]
楼主,能讲讲File Transfer吗?
www.jabber.org上讲的太简单和模糊了.

#20楼    回复  引用    

2006-05-19 10:48 by sokoo8 [未注册用户]
为什么AS用的是VS2003,AgileIM则用VS2005,有没有类似的VS2003的客户端啊?期待发布一个

#21楼    回复  引用    

2006-06-08 21:56 by hhcvod [未注册用户]
有VB的UDP穿透源码就好了
UPnpNat在VB里我也不能运行
老大们有吗,我的QQ是:87680004

#22楼    回复  引用    

2006-06-08 22:00 by hhcvod [未注册用户]
老大们,能教我怎么在VB使用UpnpNat控件吗,我好郁闷啊,我的QQ是:87680004

#23楼    回复  引用    

2006-07-07 09:16 by 西琪兰特 [未注册用户]
EnterpriseServerBase.dll 到底要从哪儿下载啊? 实在是找不到了 可以发到我的邮箱里吗?wyphw@qq.com 谢先!

#24楼    回复  引用    

2006-08-10 13:44 by 永远爱你的人 [未注册用户]
是呀我怎么敢找不到EnterpriseServerBase.dll 呀。它在哪里放呀。要不你也发给我一个。我的邮箱:
txi2008@163.com

#25楼    回复  引用    

2006-09-06 08:53 by zb[匿名] [未注册用户]
我想问一下,客户端,具体如何实现,能有这方面的文档学习学习吗?
你们都说简单,。
我要学习什么,才能做得到。?

#26楼    回复  引用  查看    

2006-09-13 14:54 by 丹心猪      
晕哇,找了好久,没找到
AxTnerop.RealAudioObjects
EnterpriseServerBase
Interop.RealAudioObjects
这三个东西不知道在哪里
麻烦楼主指明一下,谢谢了

#27楼    回复  引用  查看    

2006-09-13 15:55 by 丹心猪      
@丹心猪
已经可以了,但是用上面的密码进不去,总是提示“用户不存在,请重新输入”

#28楼    回复  引用    

2006-09-14 14:52 by 丹心猪[匿名] [未注册用户]
终于可以了

#29楼    回复  引用  查看    

2006-09-21 15:39 by 小生      
@丹心猪
在哪里可以找到這三個東東呀????

#30楼    回复  引用  查看    

2006-09-21 15:39 by 小生      
@丹心猪
在哪里可以找到這三個東東呀????

#31楼    回复  引用    

2006-11-06 16:47 by 学习.net[匿名] [未注册用户]
AxTnerop.RealAudioObjects
EnterpriseServerBase
Interop.RealAudioObjects
这3个文件在那啊?谢谢

#32楼    回复  引用    

2006-11-06 21:31 by zxar9889 [未注册用户]
为什么源码运行出错?
我遇到和前位同样的问题!

#33楼    回复  引用    

2006-11-19 09:44 by Zhu[匿名] [未注册用户]
强烈鄙视楼主,这个东西只有一部分,服务端部分一点没有
不想给别人看就不要发布,发布了又不给别人看
强烈鄙视!!!!

#34楼 [楼主]   回复  引用  查看    

2006-11-19 17:20 by zhuweisky      
@Zhu[匿名] :
ESFramework 既是服务端的源码核心,研究ESFramework就可以了

#35楼    回复  引用    

2006-11-20 13:35 by Zhu[匿名] [未注册用户]
数据库部分呢?

#36楼    回复  引用    

2006-12-15 00:44 by 毕业生[匿名] [未注册用户]
我现在的毕业设计是"IM客户端的设计及优化".楼主能给些资料参考吗?

我的邮箱:ccseesee@21cn.com

#37楼    回复  引用  查看    

2006-12-24 11:15 by brasilman      
EnterpriseServerBase.dll
hzgame#hotmail.com麻烦了

#38楼    回复  引用    

2007-02-05 18:49 by QiFine [未注册用户]
楼主,发一份完整的代码给我吧,期待中。。。
不要折磨我们了,老大
qifine@gmail.com
等待中ing。。。。。

#39楼    回复  引用    

2007-03-23 13:53 by ronglj [未注册用户]
等待中ing。。。。。

#40楼    回复  引用    

2007-04-15 18:33 by candyzheng [未注册用户]
楼主,既然开源的话,我想求得一份完整的源代码,苦寻了好久,总算发现了一个可以开源的代码,但是不完整,希望楼主说的每个人都可以开发自己的qq和msn,能圆我一个梦,如果是有条件的开源,也无妨,点对点视频的时代就将过去,希望楼主与本人联系,谢谢,msn:yb_yiduo@hotmail.com,静候佳音!!
刚在研究IM程序 找到楼主的BLOG 但原码少3个DLL
希望提供 :firedlove@163.com

#42楼    回复  引用    

2007-05-24 21:25 by 花上飞 [未注册用户]
可以编译通过,把EnterpriseServerBase.dll去掉,改为ESFramework.dll
另外两个dll可以去掉
出售蓝奇高级验证码识别引擎,可准确识别新浪动网淘宝CSDN等多种复杂验证码。

输出为一个标准DLL,可供VB,VC,Delphi,C#.NET,VB.NET,模拟精灵,按键精灵等多平台调用,调用方法简单,几行代码即可完成。独具特色的边缘检测字符分离、旋转倾斜纠正和通用字符匹配算法(无论字体和大小), 使得该引擎对于像新浪、动网、淘宝、CSDN等多种验证码均有不错的识别率,是一款效果较为理想的验证码识别引擎。附详细的调用实例和代码注释等相关技术文档。

官方网站 - http://***/yzm_advocr
识别效果怎么样一试就知道 - DEMO下载 http://***/yzm_advocr/advocr.rar




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-05-12 11:38 编辑过
Google站内搜索

相关文章:

相关链接: