C#下用P2P技术实现点对点聊天
2007-09-04 13:33
351 查看
作者:王凯明 时间:2005-11-01 00:00:00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
P2P技术简介 P2P,英文Peer-to-Peer的缩写,中译为对等互联或点对点技术。P2P技术可以让用户可以直接连接到其他用户的计算机,进行文件共享与交换,同时P2P在深度搜索、分布计算、协同工作等方面也大有用途。 简单地说,P2P就是一种用于不同PC用户之间,不经过中继设备直接交换数据或服务的技术,它允许Internet用户直接使用对方的文件。每个人可以直接连接到其他用户的计算机,并进行文件的交换,而不需要连接到服务器上再进行浏览与下载。 目前Internet的存储模式是“内容位于中心”,而P2P技术的运用将使Internet上的内容向边缘移动。这将带来以下改变: 首先,客户不再需要将文件上传到服务器,而只需要使用P2P与其他计算机进行共享; 其次,使用P2P技术的计算机不需要固定的IP地址和永久的Internet连接,这使得占有极大比例的拨号上网用户也可以享受P2P带来的变革。 [align=left]实例介绍[/align] 理解P2P技术的最好方法莫过于仔细观察并理解一个实际的P2P应用程序。C#作为微软.Net战略的重要棋子,对网络编程提供了很好的支持和优化。本文就通过一个程序,向大家介绍一下C#下的P2P编程的方法和实现机理。本文的这个程序不是很有用,但却很直观地给出了P2P(点对点)编程以及套接口编程的一些基本知识和概念。它是建立在TcpListener以及TcpClient这两个类基础上的。程序实现的原理也比较简单,但是用到了P2P技术重返“非中心化”的基本原则。简言之,用这个程序可以在网络中发送、接受消息,任何一台计算机既可以作为服务器端,又可以作为客户端。 系统要求: 1.Widows 2000服务器版操作系统或后续版本的操作系统。 2.Visual Studio.net Framework正式版。 具体方法: 首先,打开VS.net,新建一个C#项目(注意:模板为Windows应用程序),不妨命名为"P2Pchat"。图示如下: 其次,参照ICQ、OICQ等聊天工具,我们可以将程序的主界面布置成和常见聊天工具的消息发送对话框类似的布局。不过由于程序仅一个主界面,所以还要添加一些诸如“开始监听”、“停止监听”等控制按钮。同时,程序是支持昵称显示的。于是,按照这个思想,我们可以开始布置程序的主界面了。首先,往主界面上拖放如下一些控件:两个Label控件、三个Button控件、三个TextBox控件、一个RichTextBox控件以及一个StatusBar控件。各个控件的属性设置如下表所示:
其他属性为默认即可,最终布置主窗体界面如下所示: 现在到了程序的主体部分,即代码部分。在给出代码之前,我想先向大家介绍一下实现的基本原理以及其中的一些逻辑关系。 首先,程序运行后,用户得先按下“开始监听”按钮,按钮相应事件后,程序就进入了监听状态,状态栏有相应的显示。这样,本机就相当于“服务器/客户机”模式中的服务器了,其他计算机可以连接到本机并向本机发送消息。其他计算机通过该程序连接到本机是通过IP地址来实现的,C#对网络编程有很好的支持,所以程序员的工作量是比较小的。如此,一台计算机可以向另一台发送消息了。然而,这是个P2P程序,所以只要另一台计算机的用户也按下"开始监听"按钮,那台计算机也成了这台计算机的服务器了。于是就实现了消息互发功能,然而真正的服务器是不存在的,每台计算机都是服务器,每台计算机同时也是客户机,这就体现了P2P技术的"非中心化"原则。 程序主要用到了一个Listen()函数和一个Send()函数。前者实现程序的监听功能,函数实现如下:
同时还要注意的是,由于该程序用到了许多网络编程所需的对象以及输入输出对象,又运用了多线程编程机制,所以在程序的开始出得添加如下一些名字空间:
现在一个很基本的P2P运用程序以及完成,通过它,我们可以利用P2P技术的基本特性实现点对点通信。通过这个程序,我相信大家对C#下的P2P编程应该有了大致的了解。对于这个程序,不足的一点是功能比较简单,只可以发送、接受信息,而且不能穿过防火墙进行通讯,读者可以试着开发出功能更强P2P应用程序。 [align=left]总结[/align] 最后,笔者希望能通过此文唤起大家对P2P技术的兴趣。因为P2P身后所蕴藏着的无比的创造力使人们对未来互联网充满了美好的憧憬,现在世界范围的P2P应用热潮也是一浪高过一浪。在可以预见的未来,随着对P2P研究的进一步深入和关注P2P的群体逐渐增多,P2P必将进入一个飞速发展的新时期。然而国内的P2P起步得比较晚,所以更需要有大量的技术研究投入以及足够的重视以赢得更好的发展。在此,笔者希望国内的P2P能取得辉煌的发展。 |
相关文章推荐
- P2P软件的昨天 今天 明天 P2P技术在中国 P2P软件正式进入第三代 P2P将颠覆下一代互联网游戏规则 P2P商业化的思考 C#下用P2P技术实现点对点聊天 P2P流媒体播放:下一代P
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天(1) (转载)
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- C# 下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- C#下用P2P技术实现点对点聊天
- 北京思源培训中心---C#下用P2P技术实现点对点聊天(2)