C# P2P实现点对点聊天

P2P,英文Peer-to-Peer的缩写,中译为对等互联或点对点技术。P2P技术可以让用户可以直接连接到其他用户的计算机,进行文件共享与交换,同时P2P在深度搜索、分布计算、协同工作等方面也大有用途。

简单地说,P2P就是一种用于不同PC用户之间,不经过中继设备直接交换数据或服务的技术,它允许Internet用户直接使用对方的文件。每个人可以直接连接到其他用户的计算机,并进行文件的交换,而不需要连接到服务器上再进行浏览与下载。

目前Internet的存储模式是"内容位于中心",而P2P技术的运用将使Internet上的内容向边缘移动。这将带来以下改变:

首先,客户不再需要将文件上传到服务器,而只需要使用P2P与其他计算机进行共享;

其次,使用P2P技术的计算机不需要固定的IP地址和永久的Internet连接,这使得占有极大比例的拨号上网用户也可以享受P2P带来的变革。
  理解P2P技术的最好方法莫过于仔细观察并理解一个实际的P2P应用程序。C#作为微软.Net战略的重要棋子,对网络编程提供了很好的支持和优化。本文就通过一个程序,向大家介绍一下C#下的P2P编程的方法和实现机理。本文的这个程序不是很有用,但却很直观地给出了P2P(点对点)编程以及套接口编程的一些基本知识和概念。它是建立在TcpListener以及TcpClient这两个类基础上的。程序实现的原理也比较简单,但是用到了P2P技术重返"非中心化"的基本原则。简言之,用这个程序可以在网络中发送、接受消息,任何一台计算机既可以作为服务器端,又可以作为客户端。

系统要求:

1.Windows7操作系统或后续版本的操作系统。

2.Visual Studio2019

具体方法:

首先,打开VS,新建一个C#项目(注意:模板为Windows应用程序),不妨命名为"P2Pchat"。
  其次,参照ICQ、OICQ等聊天工具,我们可以将程序的主界面布置成和常见聊天工具的消息发送对话框类似的布局。不过由于程序仅一个主界面,所以还要添加一些诸如"开始监听"、"停止监听"等控制按钮。同时,程序是支持昵称显示的。于是,按照这个思想,我们可以开始布置程序的主界面了。首先,往主界面上拖放如下一些控件:两个Label控件、三个Button控件、三个TextBox控件、一个RichTextBox控件以及一个StatusBar控件。

各个控件的属性设置如下表所示:在这里插入图片描述
在这里插入图片描述
注:其中的Anchor属性是设置窗体上控件布局用的,当窗体大小改变后各个控件如何在窗体上重新分布由该属性决定,读者可参考更详细的介绍文章来理解。

其他属性为默认即可,最终布置主窗体界面如下所示:
  在这里插入图片描述
现在到了程序的主体部分,即代码部分。在给出代码之前,我想先向大家介绍一下实现的基本原理以及其中的一些逻辑关系。

首先,程序运行后,用户得先按下“开始监听”按钮,按钮相应事件后,程序就进入了监听状态,状态栏有相应的显示。这样,本机就相当于“服务器/客户机”模式中的服务器了,其他计算机可以连接到本机并向本机发送消息。其他计算机通过该程序连接到本机是通过IP地址来实现的,C#对网络编程有很好的支持,所以程序员的工作量是比较小的。如此,一台计算机可以向另一台发送消息了。然而,这是个P2P程序,所以只要另一台计算机的用户也按下"开始监听"按钮,那台计算机也成了这台计算机的服务器了。于是就实现了消息互发功能,然而真正的服务器是不存在的,每台计算机都是服务器,每台计算机同时也是客户机,这就体现了P2P技术的"非中心化"原则。

<
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值