现在用C#做一个即时通讯软件,客户端和服务器端都用C#,需要是在公网和内网中都能使用。其中包含文件传输、视频、语音聊天,这几个功能最好是通过P2P技术来实现,不要通过服务器转发。 如果客户端在不同的网段中,互相之间发送消息,如果不通过服务器转发就要考虑NAT打洞,用socket可以实现,但是各种异常处理及打洞过程都要自己写代码实现,比较麻烦。 看了WCF的介绍,WCF提供双工模式,服务器端和客户端可以直接通讯,但是不知道用WCF能不能实现两个客户端之间的直接通讯,望赐教。如果可以实现,就能省去很多socket编程的细节处理。 另,有那位高手知道C#下,有那些可以使用的即时通讯框架或相关技术,不想自己用socket来实现,关键是要能实现NAT穿透就可以。 |
|
找腾讯给你源代码 |
|
4分 |
如果你想开发一个互联网IM(而不是仅限于局域网的IM),你用“服务器转发方式”做过能够应付上百人自由聊天的IM吗?做了之后,在纠结什么p2吧!
wcf是面向业余开发人员进行了巨大的封装的一个东西,跟tcp(或者socket之类)的不能直接相比。而且不管有些人如何介绍wcf的实现方法,实际上靠谱的也就是在http上进行封装(变大而且变慢了几倍)的结果。你把它看作什么socket的替代,这完全看不出来什么前途。 |
3分 |
,在纠结什么p2吧 –> ,再纠结什么p2p吧
对于没有能讨论具体问题的程序员,我也确实没有什么代码可给你的。只是介绍给你一些非常实际的背景知识。 |
3分 |
P2P也要实现一个检索服务器啊。。。
|
我现在已经做了一个 版本的IM,原先都一直在同一网段的局域网下进行测试的,p2p文件传输也都正常。
但是在两个不同网段的局域网上测试,根本就联不通,别的就都谈不上了, 搜了一下,相关的资料,好像只能通过架设在公网上的server服务器中转打洞才能实现不同网段局域网的互通,但打洞过程很负责,有很多情况都需要处理,所以想,如果能找到 已经开发好的框架就最好了 |
|
3分 |
那就不要打洞了。你还是直接用TCP中转吧。 |
谢谢你的解答,那就是说wcf是不可能替代Socket的,那我也只能是通过Socket来实现各个功能了吧? |
|
2分 |
两边都是内网,必须借助服务器,和wcf或者socket无关。
|
4分 |
WCF里面有个叫网格网络的东西,就是用来做P2P的。
不过性能问题很大,基本上是个玩具吧。 |
那是不是说,要想做IM,还是得用socket,用wcf是不行的,我是向做成一个产品的
|
|
你都开发出来了,还来论坛问。。。不待这么玩人的。。 |
|
2分 |
如果你有兴趣的话,可以试试fastCSharp的TCP调用,在基本不损失性能的情况下屏蔽了socket操作,简单易用比WCF更方便灵活。 |
2分 |
一般来说能过做到有效利用公网用户有很不错了,NAT穿透可以等这一块成熟了再扩展。
|
2分 |
打洞什么的别想了,好好通过服务器转发吧,试试你就知道 只要代码写的好,高并发没问题
|
如果你不是要给全国人民使用的话,服务器转发就够了。
|
|
4分 |
Socket服务器这块的开源框架有个SuperSocket,再就是迅雷有个 云加速开放平台,直接调用迅雷接口,什么都不用写,利用迅雷的P2SP技术,当然只是针对下载网址是:http://open.xunlei.com/index.html
|
如果用服务器中转用UDP还是TCP啊 |
|
4分 |
tcp就行。
|
TCP应该是长链接吧,这会影响效率吗? |
|
4分 |
性能方面TCP长连接优于短连接,当时服务器需要多一点内存。 |
2分 |
难道,你想等到用户要发言的时候,才连接服务器。
|
7分 |
那个…有个叫IPMSG的软件,代码是公开的可以下载,我记得是使用UDP通信的,把这个软件的代码改一改,不知道是否可行?
另外:关于”sp1234″说的 WCF “实际上靠谱的也就是在http上进行封装(变大而且变慢了几倍)的结果。”, |
局域网跟互联网完全两个概念。。。 |
|
IPMSG 内网的,这个不一样的,内网直接通过内网IP访问就可以的
|
|
如果用UDP实现,连接上服务器后,就断开了。 发消息时,用UDP发送完消息后,也就自动断开了 |
|
6分 |
TCp通讯暂时是最好的一个方法,我最近也在搞一个网络通讯,搞出来可以拿来给大家点评点评
|
4分 |
UDP用来广播还差不多,如果需要保证消息的必须接受到,我建议使用TCP |
UDP通讯 服务器和客户端 互相通讯的已经好了。
现在在看UDP打洞的资料 |
|
4分 |
WCF就是一个玩具,性能较弱,做产品,还是老老实实用Socket好了。
|
4分 |
.net 4.5好像封装了一个P2P的类
|
2分 |
GG2013给你一切所需
GG2013-外网仿QQ通讯 |
很不错 很好很强大哦 真的神使用 快来微观
|
|
4分 |
先用着服务器转发吧,搞懂了再研究P2P就容易了
|
2分 |
IPMSG也是可以跨网的 |
4分 |
这个家伙,有点水平,就是说话不大好听。 另外,WCF的性能确实是一个问题。 |
2分 |
路过帮顶,学习下
|
6分 |
.net很早就封装了,但是要依赖windows的一个组件(不是所有的windows都支持,而且要人手启动) |
4分 |
要即时通讯,还是老实的用socket吧,WCF那东西没法
|
4分 |
我其实挺奇怪飞秋(feiQ)这个软件的
它不是基于UDP的吗?比如查找谁在线,很显然是发了个广播出去,然后收听 否则也没可能在4秒之内遍历所有的网段去连接一遍吧 可是,广播不是会被路由器屏蔽么,为什么不同网段也能够在线查找到呢? |
4分 |
他一开始出来是仿飞鸽传书,不知道现在有没有自己扩展协议,不过日本人写的飞鸽传书的协议是公开的,你可以搜索下。 |
4分 |
查看了一下协议的简介,没有看源码.百度文库里给的简介,说的就是发送广播. |
谢谢大家的意见,现在还是决定先用服务器转发,这个是一定要做的,等这个搞好了再说吧
|
|
即时通讯我就知道一个xmpp
|