使用C#实现P2P应用程序(附原码) 分享

一\前言

P2P,即英文Peer-to-Peer的缩写,中译为对等互联或点对点技术。讲到P2P,人们就会想起Napster,Napster让人们认识到了 P2P技术的威力,P2P技术也就通过Napster进入了大多数用户的视野,Napster的音乐文件交换功能是P2P的一个主要应用。P2P技术可以 让用户可以直接连接到其他用户的计算机,进行文件共享与交换。同时P2P在深度搜索、分布计算、协同工作等方面也大有用途。

二\P2P技术应用

现在的P2P应用太多了:每天使用的讯雷\网络电视\qq或msn(我认为也是一种P2P技术或者称之为端点到端点技术也好:))

三\P2P技术中的需要理解的概念

NAT(Network Address Translation)网络地址转换,也就是把私网端点地址(如192.168.1.10)转换为共网地址(如 211.157.1.100:6000).这种转换是由你的局域网的路由器自动完成的(个人理解不代表正确答案).

如果在局域网中实现P2P很简单利用Sockets.TcpClient或UdpClient就可以简单实现,对于我这个刚刚接触P2P的菜鸟(刚加入NBA的易健联也是菜鸟,我们在同一水平上大笑)来说,如何使局域网的一个端点与另外的一个局域网的端点进行通讯是一头雾水...qq是怎样实现的呢?...,讯雷又是怎样实现的呢?....

通过几天在CSDN论坛上发帖子请教高人(高级菜鸟人)才了解到一个私网的端点(如192.168.1.10)在与外网通讯时系统会自动分配一个共网的端 点地址(如211.157.1.100:6000),这样局域网中的端点就可以相互间通讯了.但在这之前需要在共网建立一个监听服务,来获得各个私网的端 点的对应的共网端点地址,流程如下:

P2P服务器: 211。157。1。1:1000
P2P客户端A:192。168。1。2:2000(私网端点)、211。157。1。2:2000(对应的公网端点)
P2P客户端B:192。168。1。3:3000(私网端点)、211。157。1。3:3000(对应的公网端点)

a、客户端A向服务器发送登陆请求:服务器记录下A的共网端点(211。157。1。2:2000)

b、客户端B向服务器发送登陆请求:服务器记录下B的共网端点(211。157。1。2:2000)

c、服务器定时向各个在线的客户端发送客户端列表(包括名称、共网端点地址等)

d、客户端间的通讯:直接向客户端N的共网端点发送UDP数据包即可。

四、源代码

c++源码

c#.net源码

转自: http://hellojianghua.blog.sohu.com/68024479.html

你可能感兴趣的:(C++,c,应用服务器,C#,网络应用)