使用C#实现P2P应用程序(附原码) 分享
2009-01-04 23:04
204 查看
一/前言
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的易健联也是菜鸟,我们在同一水平上
![](http://img3.pp.sohu.com/ppp/blog/images/emotion/3.gif)
)来说,如何使局域网的一个端点与另外的一个局域网的端点进行通讯是一头雾水...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
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的易健联也是菜鸟,我们在同一水平上
![](http://img3.pp.sohu.com/ppp/blog/images/emotion/3.gif)
)来说,如何使局域网的一个端点与另外的一个局域网的端点进行通讯是一头雾水...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# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 使用C# 完美实现多语言版本Windows应用程序
- 使用C# 完美实现多语言版本Windows应用程序
- [C#]使用 C# 代码实现拓扑排序 dotNet Core WEB程序使用 Nginx反向代理 C#里面获得应用程序的当前路径 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法 .Net程序员 初学Ubuntu ,配置Nignix 夜深了,写了个JQuery的省市区三级级联效果
- 使用mutex实现应用程序单实例运行代码分享
- C#实现P2P应用程序
- C#构建多线程应用程序(1) —— 使用委托来自动创建次线程以实现异步方法的调用
- 使用C# 完美实现多语言版本Windows应用程序
- C#实现P2P应用程序(转)
- C#如何不使用递归实现无限层次结构的代码分享[转]
- [导入]如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 70-316 使用Microsoft Visual C# .NET and Microsoft Visual Studio .NET 开发及实现基于Windows的应用程序 考点整理
- 如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 【转】使用C# 完美实现多语言版本Windows应用程序
- 将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文
- 如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- c#使用简单工厂模式实现生成html文件的封装类分享
- 如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证