首页 新闻 会员 周边

C#聊天程序

0
悬赏园豆:50 [已解决问题] 解决于 2012-07-06 10:42
我们要开发一个类似QQ的聊天程序    服务端主要都做些什么事情 客户端做些什么事情 数据库是通过服务端连接  发送数据到客户端   还是直接通过客户端连接获取数据? 我是这样想的,数据库是通过服务端连接  然后服务端和客户端使用通讯技术交互传输数据不知道对不对,烦请大侠路过给看一下,谢谢了,小弟在线等!
问题补充:

我是这样想的 服务端用Socket侦听当前客户端连接状态 服务器只做握手服务 然后好友之间点对点 数据的话使用WCF来获取 不知道对不对 我想这样 既能减轻服务器负担   

Coder²º¹5的主页 Coder²º¹5 | 初学一级 | 园豆:15
提问于:2012-04-27 11:19
< >
分享
最佳答案
0

肯定不能让客户端直接连接数据库。

聊天程序有两种模式:

1——

服务端中转。就是任何两个客户端的通信都通过服务端进行中转,先发给服务端,再由服务端发送给接收端。这个模式一般很少采用,除非是基于Web方式的应用。

2——

服务端只做验证与握手服务,聊天双方直接通信。该方案中服务器端仅仅提供帐户安全认证、双方的链路连通服务(即俗称的打洞服务)以及其它必要的业务需求(如记录用户聊天日志以备相关单位检查,嘿嘿,QQ就做了这个)。

收获园豆:28
无之无 | 大侠五级 |园豆:5095 | 2012-04-27 11:26

我觉得您说的第二种方案还是不错的,但是第一种可能更接近我们的需求,您能具体的跟我讲讲吗,比如有什么资料,技术,小弟是菜鸟一个,刚出道,懂得不是很多!嘿嘿   谢谢,QQ:283637883

Coder²º¹5 | 园豆:15 (初学一级) | 2012-04-27 15:26

@三秦人: 呵呵,我也就抛砖引玉而已。我对这个原理了解点,具体到应用项目则没有怎么做过,这个呢,有很多网站上都有在线客服功能(比如53KF服务,阿里旺旺、WebQQ都支持),他们一般用的就是基于Web的方式,不过,这些不纯粹是Web聊天,他们的客服端一般都使用桌面应用。

类似的聊天讨论,在这个园子里,你搜索下,有不少。

无之无 | 园豆:5095 (大侠五级) | 2012-04-27 15:41

@无之无: 我实现的是消息通过服务器中转的,但是传文件是双方直接发的,两个客户端在不同的内网之中,这个怎么弄啊!

Coder²º¹5 | 园豆:15 (初学一级) | 2012-07-06 10:44
其他回答(3)
0

你们开发是公司内部用么?

收获园豆:11
┢┦偉 | 园豆:1240 (小虾三级) | 2012-04-27 11:27

是的

支持(0) 反对(0) Coder²º¹5 | 园豆:15 (初学一级) | 2012-05-04 11:22
0

服务器端主要负责用户验证、数据中转、协助建立连接等。客户端主要就是UI控制、数据发送等。通讯协议可以采用基于http的XMPP,这样有现成的库,开发难度小一点。

收获园豆:11
sinhbv | 园豆:2579 (老鸟四级) | 2012-04-27 12:17

具体说说

支持(0) 反对(0) Coder²º¹5 | 园豆:15 (初学一级) | 2012-05-04 11:22

@三秦人:具体的设计的话,你参考一下xmpp的说明,应该不难做出来,只不过,在客户端设计的时候,要使用多线程,将数据发送和UI分离。服务器端的话,应该可以直接使用一个xmpp库的服务器端就可以了,当然了,你要自己实现一下验证之方面的东西。其他的话,应该就没什么了。

支持(0) 反对(0) sinhbv | 园豆:2579 (老鸟四级) | 2012-05-04 11:30

虽然是这样,但是还要应对NAT穿透等问题,不是很好处理。

支持(0) 反对(0) sinhbv | 园豆:2579 (老鸟四级) | 2012-05-08 16:41
0

园子里已经有非常成熟的通信框架ESFramework,可以用来做类似QQ的IM软件,支持P2P,传文件,而且还可以支持语音视频聊天,我们公司就是用的该框架来开发视频会议系统的。可以参考一下。

C#开源即时通讯GGTalk | 园豆:162 (初学一级) | 2013-04-26 10:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册