请问QQ怎么是P2P通信呢?聊天不是要经过服务器转发吗?另外,问一下用c#做个类似QQ的功能1个月搞得掂吗?
如果是c#视频,应该用到P2P技术吧(课本说视频编码是P2P这一章出现的
)
百度百科:
P2P是英文Peer-to-Peer(对等)的简称,又被称为“点对点”。“
对等”技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。
网络上现有的许多服务可以归入P2P的行列。即时讯息系统譬如ICQ、AOL Instant Messenger、Yahoo Pager、微软的MSN Messenger以及国内的QQ是最流行的P2P应用。它们允许用户互相沟通和交换信息、交换文件。用户之间的信息交流不是直接的,
需要有位于中心的服务器来协调。
那这样,我的理解是 如果两个人聊天,直接对话不经过服务器转发这样就是P2P,但是ICQ不是每次对话都有经过服务器的转发吗,这样也能算是P2P?
------解决方案--------------------P2P也可以集成到C/S中
------解决方案--------------------我做过类似这个的,基于TCP或者UDP的协议,很简陋的,可以在局域网里面聊天,需要一个服务端来告诉客户端,当前有多少用户在线,并且显示用户列表,另外一种是不需要服务器的,客户端之间互相通信,需要知道对方的IP才能通信。
------解决方案--------------------
另外一种是不需要服务器的,客户端之间互相通信,需要知道对方的IP才能通信。
客户端知道对方ip也是要通过服务器获得的
------解决方案--------------------腾讯几亿用户 聊天都经过数据库的话 那估计要比Google还要大的数据库才行吧
------解决方案--------------------服务器只是记录你的好友信息列表和在线用户等少量的信息。聊天的时候,你是与聊天对象直接通信的,没有经过服务器。聊天的记录也是保存到本地。
------解决方案--------------------QQ有很种通讯手段并用,比如说首先会多次使用udp并且重发,然后使用tcp,然后还会重定向到http端口去联网,等等。
p2p是一个网络概念,并不是什么简单socket通讯概念。它是指信息不保存,而是分散在终端。中心服务系统(这可能是一台服务器、也可能是一个网络)顶多只是帮应用程序联系到好友而已。
如果说到简单的通讯概念,那么“对等网络”这个词也就足够了。它是指一个应用程序与另外的机器之间,它既做服务器有做客户端,也就是两套程序全都有,这个概念。其中这也没有改变关于c/s的概念,只不过到底是c还是s的角色是到不同的通讯内容的时序上了。
关于你说的“......是最流行的P2P应用”,我不知道是哪一个烂书上的。这个说法似是而非。如果你不去指出细节,那么有时候就是骗人的。就这句话来说,前后两句话词不达意。
------解决方案--------------------本帖最后由 caozhy 于 2011-11-15 03:04:26 编辑
qq显然混合了各种通讯模式。
一个典型的情况是,你可以收到离线的消息,对不对?
------解决方案--------------------资格比较老、比较成熟的p2应用当然莫属skype了。它的具体技术是保密的,但是可以以测试的方法来分析器通讯机制。其实它谈不上多少时髦的所谓“打洞”技术。当两个终端可以直接联系,就直接联系。如果不能直接联系,网络系统会指派它们共同通过最近的一个在外网的客户机器作为临时服务器。关键还是其通讯协议非常适合语音通讯、其编码解码技术非常先进。就这么简单。