用visual c#完成p2p运用程序

用visual c#完成p2p运用程序

ID:26494803

大小:68.50 KB

页数:13页

时间:2018-11-27

用visual c#完成p2p运用程序_第1页
用visual c#完成p2p运用程序_第2页
用visual c#完成p2p运用程序_第3页
用visual c#完成p2p运用程序_第4页
用visual c#完成p2p运用程序_第5页
资源描述:

《用visual c#完成p2p运用程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一.前言:  P2P,即英文Peer-to-Peer的缩写,中译为对等互联或点对点技术。讲到P2P,人们就会想起Napster,Napster让人们认识到了P2P技术的威力,P2P技术也就通过Napster进入了大多数用户的视野,Napster的音乐文件交换功能是P2P的一个主要应用。P2P技术可以让用户可以直接连接到其他用户的计算机,进行文件共享与交换。同时P2P在深度搜索、分布计算、协同工作等方面也大有用途。  简单地说,P2P就是一种用于不同PC用户之间,不经过中继设备直接交换数据或服务的技术,它允许Internet用户直接使用对方的文件。每个人可以

2、直接连接到其他用户的计算机,并进行文件的交换,而不需要连接到服务器上再进行浏览与下载。因为消除了中间环节,P2P技术使得网络上的沟通变得更容易、更直接。P2P改变了Internet现在的以大网站为中心的状态、重返"非中心化",并把权力交还给用户。从某种意义上讲,P2P体现了Internet的本质。在网络尚未发展成为现在的Web之前,网民就是利用所谓的"布告板"等渠道彼此直接交换信息和文件。  目前Internet的存储模式是"内容位于中心",而P2P技术的运用将使Internet上的内容向边缘移动。这将带来以下改变:首先,客户不再需要将文件上传到服务器,而

3、只需要使用P2P与其他计算机进行共享;其次,使用P2P技术的计算机不需要固定的IP地址和永久的Internet连接,这使得占有极大比例的拨号上网用户也可以享受P2P带来的变革。  理解P2P技术方面的最好方法是仔细观察并理解一个实际的P2P应用程序。C#作为微软.Net战略的重要棋子,对网络编程提供了很好的支持和优化。本文就通过一个程序,向大家介绍一下C#下的P2P编程的方法和实现机理。本文的这个程序虽然不是很有用,但却很直观地给出了P2P(点对点)编程以及套接口编程的一些基本知识和概念。它是建立在TcpListener以及TcpClient这两个类基础上

4、的,除外还有相应的输入和输出控制。实现的原理也比较简单,但是用到了P2P技术重返"非中心化"的基本原则。简言之,用这个程序可以在网络中发送、接受信息,任何一台计算机既可以作为服务器端,又可以作为客户端。程序共用到了四个类:一个Listener类(用来监听新的连接)、一个Sender类(用来发送信息)、一个Inputhandler类(用来控制输入)、一个Initialize类(用来完成初始化工作)。下面,我先给大家介绍一下这四个类,最后再给出程序的具体实现方法。二.基本类介绍: 1.Listener类:  Listener类是用来监听新的连接。当它的一个对象

5、被建立并开启后,该对象就开始不断监听来自网络中的连接请求。一旦有了一个连接请求,该对象就设法建立连接并取得它的字节流进而转化成字符串显示在控制台中。当一个连接结束后,该对象就继续进行监听来自网络中的连接请求。  代码以及注释如下:namespaceP2PTest{ usingSystem; usingSystem.Net.Sockets; usingSystem.Threading; publicclassListener {  privateThreadth;  privateTcpListenertcpl;  publicboollistenerRun

6、=true;  //listenerRun为true,表示可以接受连接请求,false则为结束程序  publicListener()//构造函数  {   th=newThread(newThreadStart(Listen));//新建一个用于监听的线程   th.Start();//打开新线程  }  publicvoidStop()  {   tcpl.Stop();   th.Abort();//终止线程  }  privatevoidListen()  {   try   {    tcpl=newTcpListener(5656);//在56

7、56端口新建一个TcpListener对象    tcpl.Start();    Console.WriteLine("startedlistening..");    while(listenerRun)//开始监听    {     Sockets=tcpl.AcceptSocket();     stringremote=s.RemoteEndPoint.ToString();     Byte[]stream=newByte[80];     inti=s.Receive(stream);//接受连接请求的字节流     stringmsg="<

8、"+remote+">"+System.Text.Encoding

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。