<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/622ba58115da9b288b1554e2/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622ba58115da9b288b1554e2/bg1.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0">[C# <span class="ff2 sc1">网络编程系列</span>]<span class="ff2 sc1">专题八:</span>P2P<span class="_ _0"> </span><span class="ff2 sc1">编程</span></div><div class="t m0 x2 h4 y3 ff2 fs1 fc1 sc0 ls0 ws0">(转载<span class="ff3">: <span class="ff4 fc0">http://www<span class="_ _1"></span>.cnblogs.com/zhili/archive/2012/08/23/W<span class="_ _1"></span>e<span class="_ _2"></span>bServer<span class="_ _1"></span>.html<span class="_ _3"></span><span class="fc1"> <span class="ff2">)</span></span></span></span></div><div class="t m0 x3 h5 y4 ff2 fs2 fc1 sc0 ls0 ws0">引言:</div><div class="t m0 x3 h6 y5 ff3 fs3 fc1 sc0 ls0 ws0"> <span class="_ _3"></span> <span class="_ _3"></span> <span class="ff2">前<span class="_ _3"></span>面的<span class="_ _3"></span>介绍<span class="_ _3"></span>专题<span class="_ _3"></span>中有<span class="_ _3"></span>朋友向<span class="_ _3"></span>我留<span class="_ _3"></span>言说介<span class="_ _3"></span>绍下<span class="_ _3"></span>关于<span class="_"> </span></span>P2P<span class="_ _4"> </span><span class="ff2">相关<span class="_ _3"></span>的内容<span class="_ _3"></span>的,<span class="_ _3"></span>首先<span class="_ _3"></span>本人<span class="_ _3"></span>对于<span class="_"> </span></span>C#<span class="ff2">网络<span class="_ _3"></span>编程也<span class="_ _3"></span>不</span></div><div class="t m0 x3 h6 y6 ff2 fs3 fc1 sc0 ls0 ws0">是什么大牛,因为能力的关系,也只能把自己的一些学习过程和自己的一些学习过程中的理解和大家分享</div><div class="t m0 x3 h6 y7 ff2 fs3 fc1 sc0 ls0 ws0">下的,下面就进入正题——<span class="ff3">P2P</span>(<span class="ff3">P<span class="_ _2"></span>eer to P<span class="_ _2"></span>eer<span class="ff2">)编程。</span></span></div><div class="t m0 x3 h7 y8 ff3 fs3 fc1 sc0 ls0 ws0"> </div><div class="t m0 x3 h8 y9 ff2 fs4 fc1 sc2 ls0 ws0">一、<span class="ff1 sc0">P2P<span class="_ _5"> </span></span>的介绍</div><div class="t m0 x3 h5 ya ff3 fs2 fc1 sc0 ls0 ws0"> <span class="_ _3"></span> <span class="_ _3"></span> <span class="ff2">首<span class="_ _3"></span>先,<span class="_ _3"></span>现在<span class="_ _3"></span>大家<span class="_ _3"></span>熟知的<span class="_ _5"> </span></span>BT<span class="_ _3"></span><span class="ff2">、电<span class="_ _3"></span>驴、迅<span class="_ _3"></span>雷、<span class="_ _3"></span></span>Q<span class="_ _3"></span>Q<span class="ff2">、</span>M<span class="_ _3"></span>SN<span class="_ _6"> </span><span class="ff2">和<span class="_ _6"> </span></span>PPlive<span class="_ _6"> </span><span class="ff2">等<span class="_ _3"></span>都是<span class="_ _3"></span>基于</span></div><div class="t m0 x3 h5 yb ff3 fs2 fc1 sc0 ls0 ws0">P2P<span class="_ _6"> </span><span class="ff2">方<span class="_ _3"></span>式<span class="_ _3"></span>实现<span class="_ _3"></span>的<span class="_ _3"></span>软<span class="_ _3"></span>件,<span class="_ _3"></span>并<span class="_ _3"></span>且<span class="_ _3"></span>对等<span class="_ _3"></span>联<span class="_ _3"></span>网<span class="_ _3"></span>(<span class="_ _7"></span></span>P<span class="_ _1"></span>eer<span class="_ _3"></span> to <span class="_ _3"></span>P<span class="_ _1"></span>eer<span class="_ _8"></span><span class="ff2">,<span class="_ _3"></span></span>P2P<span class="ff2">)<span class="_ _3"></span>将<span class="_ _3"></span>是<span class="_ _3"></span>互联<span class="_ _3"></span>网<span class="_ _3"></span>的<span class="_ _3"></span>发</span></div><div class="t m0 x3 h5 yc ff2 fs2 fc1 sc0 ls0 ws0">展方向,因此对于<span class="_ _6"> </span><span class="ff3">P2P<span class="_ _4"> </span></span>技术的了解显得非常的重要,下面就来介绍下<span class="_ _6"> </span><span class="ff3">P2P<span class="_ _6"> </span></span>架构:</div><div class="t m0 x4 h5 yd ff2 fs2 fc1 sc0 ls0 ws0">在<span class="_ _6"> </span><span class="ff3">P2P<span class="_ _6"> </span></span>技术之<span class="_ _3"></span>前,我们<span class="_ _3"></span>所有的网<span class="_ _3"></span>络应用<span class="_ _3"></span>都采用<span class="_ _5"> </span><span class="ff3">C/S<span class="_ _6"> </span></span>或者<span class="_ _6"> </span><span class="ff3">B/S<span class="_ _5"> </span></span>架构来实现<span class="_ _3"></span>的</div><div class="t m0 x3 h5 ye ff2 fs2 fc1 sc0 ls0 ws0">然而<span class="_ _3"></span>在<span class="_ _3"></span>之前<span class="_ _5"> </span><span class="ff3">C/S<span class="_ _6"> </span></span>架<span class="_ _3"></span>构的<span class="_ _3"></span>应用<span class="_ _3"></span>程<span class="_ _3"></span>序中<span class="_ _3"></span>,客<span class="_ _3"></span>户<span class="_ _3"></span>端软<span class="_ _3"></span>件向<span class="_ _3"></span>服<span class="_ _3"></span>务器<span class="_ _3"></span>发出<span class="_ _3"></span>请<span class="_ _3"></span>求,<span class="_ _3"></span>服务<span class="_ _3"></span>器然</div><div class="t m0 x3 h5 yf ff2 fs2 fc1 sc0 ls0 ws0">后对<span class="_ _3"></span>客<span class="_ _3"></span>户端<span class="_ _3"></span>请求<span class="_ _3"></span>做出<span class="_ _3"></span>响<span class="_ _3"></span>应,<span class="_ _3"></span>在这<span class="_ _3"></span>种<span class="_ _3"></span>情况<span class="_ _3"></span>下,<span class="_ _3"></span>如<span class="_ _3"></span>果客<span class="_ _3"></span>户端<span class="_ _3"></span>越<span class="_ _3"></span>多,<span class="_ _3"></span>此时<span class="_ _3"></span>服<span class="_ _3"></span>务器<span class="_ _3"></span>的压</div><div class="t m0 x3 h5 y10 ff2 fs2 fc1 sc0 ls0 ws0">力就越<span class="_ _3"></span>大。然而<span class="_ _3"></span>采用<span class="_ _5"> </span><span class="ff3">P2P<span class="_ _6"> </span></span>技<span class="_ _3"></span>术实现的<span class="_ _3"></span>每台计算<span class="_ _3"></span>机既是客<span class="_ _3"></span>户端,<span class="_ _3"></span>也是服务<span class="_ _3"></span>器,他</div><div class="t m0 x3 h5 y11 ff2 fs2 fc1 sc0 ls0 ws0">们的<span class="_ _3"></span>功<span class="_ _3"></span>能都<span class="_ _3"></span>是对<span class="_ _3"></span>等的<span class="_ _3"></span>。<span class="_ _3"></span>对于<span class="_ _3"></span>安装<span class="_ _3"></span>了<span class="_ _0"> </span><span class="ff3">P2P<span class="_ _6"> </span></span>软<span class="_ _3"></span>件(<span class="_ _3"></span>如迅<span class="_ _3"></span>雷<span class="_ _3"></span>,<span class="_ _3"></span><span class="ff3">QQ<span class="_ _6"> </span></span>等<span class="_ _3"></span>)<span class="_ _3"></span>的计<span class="_ _3"></span>算机<span class="_ _3"></span>加<span class="_ _3"></span>入</div><div class="t m0 x3 h5 y12 ff2 fs2 fc1 sc0 ls0 ws0">一个共同的<span class="_ _6"> </span><span class="ff3">P2P<span class="_ _4"> </span></span>网络,网络中的节点之间可以直接进行数据传输和通信。</div><div class="t m0 x3 h5 y13 ff1 fs2 fc1 sc0 ls0 ws0">1.1 P2P<span class="_ _6"> </span><span class="ff2 sc2">架构和<span class="_ _6"> </span></span>C/S<span class="_ _4"> </span><span class="ff2 sc2">架构的比较</span></div><div class="t m0 x3 h5 y14 ff3 fs2 fc1 sc0 ls0 ws0"> C/S<span class="_ _6"> </span><span class="ff2">架构有下面的缺点(其实上面的简单介绍中也讲到过):</span></div><div class="t m0 x3 h5 y15 ff3 fs2 fc1 sc0 ls0 ws0"> <span class="_ _3"></span> <span class="_ _3"></span> <span class="_ _8"></span> 1.<span class="_ _3"></span> <span class="_ _3"></span><span class="ff2">服<span class="_ _3"></span>务<span class="_ _3"></span>器<span class="_ _3"></span>负<span class="_ _3"></span>担<span class="_ _3"></span>过<span class="_ _3"></span>重<span class="_ _3"></span>。当<span class="_ _3"></span>大<span class="_ _3"></span>量<span class="_ _3"></span>用<span class="_ _3"></span>户<span class="_ _3"></span>访<span class="_ _3"></span>问<span class="_"> </span></span>C/S<span class="_ _6"> </span><span class="ff2">系<span class="_ _3"></span>统<span class="_ _3"></span>的<span class="_ _3"></span>服<span class="_ _3"></span>务<span class="_ _3"></span>器<span class="_ _3"></span>时<span class="_ _3"></span>,<span class="_ _3"></span>服务<span class="_ _3"></span>器<span class="_ _3"></span>常<span class="_ _3"></span>常<span class="_ _3"></span>会</span></div><div class="t m0 x3 h5 y16 ff2 fs2 fc1 sc0 ls0 ws0">出现<span class="_ _3"></span>网<span class="_ _3"></span>络堵<span class="_ _3"></span>塞等<span class="_ _3"></span>现象<span class="_ _3"></span>,<span class="_ _3"></span>这时<span class="_ _3"></span>候,<span class="_ _3"></span>我<span class="_ _3"></span>们可<span class="_ _3"></span>能会<span class="_ _3"></span>通<span class="_ _3"></span>过增<span class="_ _3"></span>加投<span class="_ _3"></span>资<span class="_ _3"></span>提高<span class="_ _3"></span>服务<span class="_ _3"></span>器<span class="_ _3"></span>的硬<span class="_ _3"></span>件性</div><div class="t m0 x3 h5 y17 ff2 fs2 fc1 sc0 ls0 ws0">能</div></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622ba58115da9b288b1554e2/bg2.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x3 h5 y18 ff3 fs2 fc1 sc0 ls0 ws0"> 2. <span class="ff2">系统稳健性和服务器关联密切。指的是<span class="_ _3"></span>——如果服务器出现了问题时,整</span></div><div class="t m0 x3 h5 y19 ff2 fs2 fc1 sc0 ls0 ws0">个系统的运行将会瘫痪(感觉是面向对象中经常强调的原则——低耦合原则)</div><div class="t m0 x3 h5 y1a ff2 fs2 fc1 sc0 ls0 ws0">然而<span class="_ _6"> </span><span class="ff3">P2P<span class="_ _4"> </span></span>具有下面的特点:</div><div class="t m0 x3 h5 y1b ff3 fs2 fc1 sc0 ls0 ws0">1.<span class="ff2">对等模式</span></div><div class="t m0 x3 h5 y1c ff3 fs2 fc1 sc0 ls0 ws0"> <span class="_ _3"></span> P2P<span class="_ _6"> </span><span class="ff2">系<span class="_ _3"></span>统中的客<span class="_ _3"></span>户端能够<span class="_ _3"></span>同时扮演<span class="_ _3"></span>客户端和<span class="_ _3"></span>服务器<span class="_ _3"></span>的角色,<span class="_ _3"></span>使两台计<span class="_ _3"></span>算机之</span></div><div class="t m0 x3 h5 y1d ff2 fs2 fc1 sc0 ls0 ws0">间<span class="_ _3"></span>能<span class="_ _3"></span>够不<span class="_ _3"></span>通<span class="_ _3"></span>过<span class="_ _3"></span>服<span class="_ _3"></span>务<span class="_ _3"></span>器<span class="_ _3"></span>直<span class="_ _3"></span>接<span class="_ _3"></span>进行<span class="_ _3"></span>信<span class="_ _3"></span>息<span class="_ _3"></span>分<span class="_ _3"></span>享<span class="_ _3"></span>(<span class="_ _7"></span><span class="ff3">QQ<span class="_ _6"> </span></span>中<span class="_ _3"></span>当<span class="_ _3"></span>好<span class="_ _3"></span>友<span class="_ _3"></span>在<span class="_ _3"></span>线的<span class="_ _3"></span>时<span class="_ _3"></span>候<span class="_ _3"></span>发<span class="_ _3"></span>信<span class="_ _3"></span>息<span class="_ _3"></span>时<span class="_ _3"></span>,</div><div class="t m0 x3 h5 y1e ff2 fs2 fc1 sc0 ls0 ws0">相信<span class="_ _3"></span>此<span class="_ _3"></span>时是<span class="_ _3"></span>不需<span class="_ _3"></span>要经<span class="_ _3"></span>过<span class="_ _3"></span>服务<span class="_ _3"></span>器转<span class="_ _3"></span>发<span class="_ _3"></span>的,<span class="_ _3"></span>只有<span class="_ _3"></span>当<span class="_ _3"></span>给离<span class="_ _3"></span>线好<span class="_ _3"></span>友<span class="_ _3"></span>发送<span class="_ _3"></span>消息<span class="_ _3"></span>时<span class="_ _3"></span>,此<span class="_ _3"></span>时应</div><div class="t m0 x3 h5 y1f ff2 fs2 fc1 sc0 ls0 ws0">该会<span class="_ _3"></span>先<span class="_ _3"></span>把消<span class="_ _3"></span>息发<span class="_ _3"></span>送到<span class="_ _3"></span>服<span class="_ _3"></span>务器<span class="_ _3"></span>端存<span class="_ _3"></span>储<span class="_ _3"></span>起来<span class="_ _3"></span>,当<span class="_ _3"></span>好<span class="_ _3"></span>友再<span class="_ _3"></span>次登<span class="_ _3"></span>录<span class="_ _3"></span>的时<span class="_ _3"></span>候,<span class="_ _3"></span>会<span class="_ _3"></span>和服<span class="_ _3"></span>务器</div><div class="t m0 x3 h5 y20 ff2 fs2 fc1 sc0 ls0 ws0">进<span class="_ _3"></span>行<span class="_ _3"></span>连<span class="_ _3"></span>接<span class="_ _3"></span>,<span class="_ _3"></span>服<span class="_ _3"></span>务<span class="_ _3"></span>器<span class="_ _3"></span>会<span class="_ _3"></span>进<span class="_ _3"></span>行<span class="_ _3"></span>判<span class="_ _3"></span>断<span class="_ _3"></span>是<span class="_ _3"></span>不<span class="_ _8"></span>是<span class="_ _3"></span>给<span class="_ _3"></span>这<span class="_ _3"></span>个<span class="_ _3"></span>用<span class="_ _3"></span>户<span class="_ _3"></span>的<span class="_ _3"></span>信<span class="_ _3"></span>息<span class="_ _3"></span>来<span class="_ _3"></span>决<span class="_ _3"></span>定<span class="_ _3"></span>是<span class="_ _3"></span>否<span class="_ _3"></span>转<span class="_ _3"></span>发<span class="_ _3"></span>,<span class="_ _4"> </span><span class="ff3">QQ</span></div><div class="t m0 x3 h9 y21 ff2 fs2 fc1 sc0 ls0 ws0">软<span class="_ _7"></span>件<span class="_ _9"></span>的<span class="_ _7"></span>实<span class="_ _9"></span>现<span class="_ _7"></span>属<span class="_ _9"></span>于<span class="_ _7"></span>混<span class="_ _9"></span>合<span class="_ _7"></span>型<span class="_ _a"> </span><span class="ff3">P2P<span class="_"> </span></span>结<span class="_ _7"></span>构<span class="_ _7"></span>的<span class="_ _7"></span>,<span class="_ _9"></span> <span class="_ _9"></span>这<span class="_ _7"></span>个<span class="_ _9"></span>会<span class="_ _7"></span>在<span class="_ _9"></span>后<span class="_ _7"></span>面<span class="_ _9"></span>的<span class="_"> </span><span class="ff3">P2P<span class="_"> </span></span>系<span class="_ _7"></span>统<span class="_ _9"></span>分<span class="_ _7"></span><span class="ff5">类<span class="_ _9"></span></span>中<span class="_ _7"></span>介</div><div class="t m0 x3 h5 y22 ff2 fs2 fc1 sc0 ls0 ws0">绍。)</div><div class="t m0 x4 h9 y23 ff5 fs2 fc1 sc0 ls0 ws0">注<span class="ff2">:<span class="_ _3"></span></span>括<span class="_ _3"></span>号<span class="ff2">中<span class="_ _3"></span>都是<span class="_ _3"></span>我<span class="_ _3"></span>个人<span class="_ _3"></span>的一<span class="_ _3"></span>些<span class="_ _3"></span>理解<span class="_ _3"></span>,如<span class="_ _3"></span>果<span class="_ _3"></span>有什<span class="_ _3"></span>么说<span class="_ _3"></span></span>错<span class="_ _3"></span><span class="ff2">的<span class="_ _3"></span></span>地<span class="ff2">方<span class="_ _3"></span>请大<span class="_ _3"></span>家<span class="_ _3"></span></span>及<span class="ff2">时<span class="_ _3"></span></span>更</div><div class="t m0 x3 h9 y24 ff2 fs2 fc1 sc0 ls0 ws0">正我,这<span class="ff5">样</span>我会<span class="ff5">及</span>时的<span class="ff5">更新</span>以<span class="ff5">免误导</span>大家,<span class="ff5">谢谢</span>大家<span class="ff5">监督</span>。</div><div class="t m0 x3 h9 y25 ff3 fs2 fc1 sc0 ls0 ws0">2. <span class="ff2">网络资<span class="ff5">源</span>的分<span class="ff5">布</span>式存储</span></div><div class="t m0 x3 h9 y26 ff3 fs2 fc1 sc0 ls0 ws0"> <span class="_ _3"></span> <span class="ff2">在<span class="_ _6"> </span></span>C/S<span class="_ _6"> </span><span class="ff2">架构<span class="_ _3"></span>中,所有客户端都<span class="_ _3"></span>直接<span class="ff5">从</span>服务器<span class="_ _3"></span>下载所有数据资<span class="_ _3"></span><span class="ff5">源</span>,这<span class="ff5">样势<span class="_ _3"></span>必</span>会</span></div><div class="t m0 x3 h9 y27 ff2 fs2 fc1 sc0 ls0 ws0">加重服<span class="_ _3"></span>务器的负<span class="_ _3"></span>担,而<span class="_ _0"> </span><span class="ff3">P2<span class="_ _2"></span>P<span class="_ _6"> </span><span class="ff2">则<span class="ff5">改<span class="_ _3"></span>变</span>了以<span class="_ _3"></span>服务器为<span class="_ _3"></span>中<span class="ff5">心<span class="_ _3"></span></span>的<span class="ff5">状态</span>,<span class="_ _3"></span>使每个节<span class="_ _3"></span>点可以</span></span></div><div class="t m0 x3 h9 y28 ff2 fs2 fc1 sc0 ls0 ws0">先<span class="ff5">从<span class="_ _3"></span></span>服<span class="_ _3"></span>务器<span class="_ _3"></span>上个<span class="_ _3"></span>下<span class="_ _3"></span>载一<span class="_ _3"></span><span class="ff5">部<span class="_ _3"></span></span>分,<span class="_ _3"></span>然后<span class="_ _3"></span>再<span class="_ _3"></span>相互<span class="_ _3"></span><span class="ff5">从<span class="_ _3"></span></span>对方<span class="_ _3"></span>或者<span class="_ _3"></span>其<span class="_ _3"></span>他节<span class="_ _3"></span>点下<span class="_ _3"></span>载其<span class="_ _3"></span><span class="ff5">余<span class="_ _3"></span>部<span class="_ _3"></span></span>分。</div><div class="t m0 x3 h9 y29 ff2 fs2 fc1 sc0 ls0 ws0">采用这种方式,当大量客户端同时下载时,就不会<span class="ff5">形成</span>网络堵塞现象了。</div><div class="t m0 x3 h7 y2a ff3 fs3 fc1 sc0 ls0 ws0"> </div><div class="t m0 x3 ha y2b ff1 fs4 fc1 sc0 ls0 ws0">1.2 P2P<span class="_ _5"> </span><span class="ff2 sc2">系统的分<span class="ff5">类</span></span></div><div class="t m0 x3 h9 y2c ff3 fs1 fc1 sc0 ls0 ws0"> <span class="_ _3"></span> <span class="_ _3"></span> <span class="_ _3"></span><span class="ff2 fs2">使<span class="_ _3"></span>用<span class="_ _6"> </span><span class="ff3">P2P<span class="_ _6"> </span></span>技<span class="_ _3"></span>术<span class="_ _3"></span>的系<span class="_ _3"></span>统分<span class="_ _3"></span>为<span class="_ _3"></span>两<span class="ff5">类<span class="_ _3"></span></span>:<span class="_ _3"></span>(<span class="_ _3"></span><span class="ff3">1</span>)<span class="_ _3"></span>单<span class="_ _3"></span><span class="ff5">纯</span>型<span class="_ _5"> </span><span class="ff3">P2P——<span class="ff5">没<span class="_ _3"></span></span></span>有专<span class="_ _3"></span>用的<span class="_ _3"></span>服<span class="_ _3"></span>务器<span class="_ _3"></span>。</span></div><div class="t m0 x3 h9 y2d ff2 fs2 fc1 sc0 ls0 ws0">安装了<span class="_ _6"> </span><span class="ff3">P2P<span class="_ _6"> </span></span>软件的<span class="ff5">各<span class="_ _3"></span></span>个计算机可以<span class="_ _3"></span>直接通信<span class="_ _3"></span>。<span class="_ _b"></span>(<span class="ff3">2</span>)混合型<span class="_ _5"> </span><span class="ff3">P2P——</span>有专用的服</div><div class="t m0 x3 h9 y2e ff2 fs2 fc1 sc0 ls0 ws0">务器<span class="_ _3"></span>,此时<span class="_ _3"></span>的服<span class="_ _3"></span>务器<span class="_ _3"></span>一<span class="ff5">般<span class="_ _3"></span>叫索<span class="_ _3"></span></span>引服<span class="_ _3"></span>务器<span class="_ _3"></span>,此<span class="_ _3"></span>服务器<span class="_ _3"></span><span class="ff5">与<span class="_ _c"> </span><span class="ff3">C/S<span class="_ _6"> </span></span></span>架<span class="_ _3"></span>构下<span class="_ _3"></span>的服务<span class="_ _3"></span>器不同<span class="_ _7"></span>,</div><div class="t m0 x3 h9 y2f ff2 fs2 fc1 sc0 ls0 ws0">在<span class="_ _6"> </span><span class="ff3">C/S<span class="_ _5"> </span></span>架构<span class="_ _3"></span>下所<span class="_ _3"></span>有资<span class="_ _3"></span><span class="ff5">源<span class="_ _3"></span></span>都存<span class="_ _3"></span>储<span class="_ _3"></span>在服<span class="_ _3"></span>务器<span class="_ _3"></span>中<span class="_ _3"></span>,所<span class="_ _3"></span>有传<span class="_ _3"></span><span class="ff5">递<span class="_ _3"></span></span>的<span class="_ _3"></span>信息<span class="_ _3"></span>都要<span class="_ _3"></span>经<span class="_ _3"></span>过服<span class="_ _3"></span>务器<span class="_ _3"></span>,</div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622ba58115da9b288b1554e2/bg3.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x3 h9 y18 ff2 fs2 fc1 sc0 ls0 ws0">而在混<span class="_ _3"></span>合型<span class="_ _5"> </span><span class="ff3">P2P<span class="_ _6"> </span></span>系统中的<span class="_ _3"></span><span class="ff5">索</span>引服<span class="_ _3"></span>务器<span class="ff5">仅<span class="_ _3"></span>仅</span>起到<span class="_ _3"></span><span class="ff5">协</span>调和<span class="ff5">扩<span class="_ _3"></span></span>展的功<span class="_ _3"></span>能,资<span class="_ _3"></span><span class="ff5">源</span>不是<span class="_ _3"></span><span class="ff5">全</span></div><div class="t m0 x3 h9 y19 ff5 fs2 fc1 sc0 ls0 ws0">部<span class="ff2">存储<span class="_ _3"></span>在服务器<span class="_ _3"></span>上,而是<span class="_ _3"></span>分</span>布<span class="_ _3"></span><span class="ff2">在</span>各<span class="ff2">个<span class="_ _3"></span>电</span>脑<span class="ff2">上<span class="_ _3"></span>,安装了<span class="_"> </span><span class="ff3">P2P<span class="_ _6"> </span></span>软件<span class="_ _3"></span>的电</span>脑<span class="_ _3"></span>开始全部</div><div class="t m0 x3 h9 y30 ff2 fs2 fc1 sc0 ls0 ws0">和<span class="ff5">索</span>引<span class="_ _3"></span>服务器连<span class="_ _3"></span>接,以<span class="_ _3"></span><span class="ff5">便告</span>知<span class="_ _3"></span>自己<span class="ff5">监<span class="_ _3"></span>听</span>的<span class="_ _5"> </span><span class="ff3">IP<span class="_ _6"> </span><span class="ff5">地址</span></span>和<span class="_ _3"></span>端<span class="ff5">口号<span class="_ _3"></span></span>,然后再<span class="_ _3"></span>通过<span class="ff5">索<span class="_ _3"></span></span>引服</div><div class="t m0 x3 h9 y31 ff2 fs2 fc1 sc0 ls0 ws0">务器<span class="_ _3"></span><span class="ff5">告<span class="_ _3"></span>诉</span>其<span class="_ _3"></span>他<span class="ff5">与<span class="_ _3"></span></span>自<span class="_ _3"></span>己连<span class="_ _3"></span>接的<span class="_ _3"></span>电<span class="_ _3"></span><span class="ff5">脑</span>,<span class="_ _3"></span>每<span class="_ _3"></span>台计<span class="_ _3"></span>算机<span class="_ _3"></span>的<span class="_ _3"></span>连接<span class="_ _3"></span>和断<span class="_ _3"></span><span class="ff5">开<span class="_ _3"></span></span>都通<span class="_ _3"></span>过<span class="_ _3"></span>服务<span class="_ _3"></span>器通<span class="_ _3"></span>知</div><div class="t m0 x3 h9 y32 ff2 fs2 fc1 sc0 ls0 ws0">网络<span class="_ _3"></span>上<span class="_ _3"></span>有联<span class="_ _3"></span>系的<span class="_ _3"></span>计算<span class="_ _3"></span>机<span class="_ _3"></span>,这<span class="_ _3"></span><span class="ff5">样<span class="_ _3"></span></span>就<span class="ff5">减<span class="_ _3"></span>轻<span class="_ _3"></span></span>了每<span class="_ _3"></span>台计<span class="_ _3"></span>算<span class="_ _3"></span>机<span class="ff5">搜<span class="_ _3"></span>索<span class="_ _3"></span></span>其他<span class="_ _3"></span>计算<span class="_ _3"></span>机<span class="_ _3"></span>的负<span class="_ _3"></span>担,<span class="_ _3"></span><span class="ff5">但</span></div><div class="t m0 x3 h9 y33 ff2 fs2 fc1 sc0 ls0 ws0">是信<span class="_ _3"></span>息<span class="_ _3"></span>的传<span class="_ _3"></span><span class="ff5">递还<span class="_ _3"></span></span>是<span class="_ _3"></span>通过<span class="_ _3"></span>点对<span class="_ _3"></span>点<span class="_ _3"></span>的方<span class="_ _3"></span>式来<span class="_ _3"></span><span class="ff5">完<span class="_ _3"></span>成<span class="_ _3"></span></span>(这<span class="_ _3"></span><span class="ff5">里</span>可<span class="_ _3"></span>以<span class="_ _3"></span>以<span class="_"> </span><span class="ff3">QQ<span class="_ _6"> </span></span>为<span class="_ _3"></span><span class="ff5">例</span>,<span class="_ _3"></span>当<span class="_ _3"></span>我们<span class="_ _3"></span>电</div><div class="t m0 x3 h9 y34 ff5 fs2 fc1 sc0 ls0 ws0">脑<span class="ff2">上<span class="_ _3"></span>安装了<span class="_ _5"> </span><span class="ff3">QQ<span class="_ _6"> </span></span>这</span>类<span class="_ _5"> </span><span class="ff3">P2P<span class="_ _6"> </span><span class="ff2">软件<span class="_ _3"></span>时,安<span class="_ _3"></span>装了<span class="_ _5"> </span></span>QQ<span class="_ _6"> </span><span class="ff2">这<span class="_ _3"></span></span></span>类<span class="ff2">软<span class="_ _3"></span>件的计<span class="_ _3"></span>算机<span class="_ _3"></span>就会加<span class="_ _3"></span>入一<span class="_ _3"></span>个</span></div><div class="t m0 x3 h9 y35 ff3 fs2 fc1 sc0 ls0 ws0">P2P<span class="_ _6"> </span><span class="ff2">网<span class="_ _3"></span>络,<span class="_ _3"></span>并且<span class="_ _3"></span>登<span class="_ _3"></span><span class="ff5">陆</span>的<span class="_ _3"></span>时<span class="_ _3"></span>候都<span class="_ _3"></span>会<span class="_ _3"></span><span class="ff5">与索<span class="_ _3"></span></span>引服<span class="_ _3"></span>务<span class="_ _3"></span>器<span class="ff5">建<span class="_ _3"></span>立<span class="_ _3"></span></span>连接<span class="_ _3"></span>,通<span class="_ _3"></span>过连<span class="_ _3"></span>接<span class="_ _3"></span>来<span class="ff5">告<span class="_ _3"></span>诉<span class="_ _3"></span></span>服务</span></div><div class="t m0 x3 h9 y36 ff2 fs2 fc1 sc0 ls0 ws0">器自己<span class="_ _3"></span>的<span class="_ _6"> </span><span class="ff3">IP<span class="_ _6"> </span><span class="ff5">地址<span class="_ _3"></span></span></span>和端<span class="ff5">口<span class="_ _3"></span>号</span>,当<span class="_ _3"></span>我们<span class="ff5">找<span class="_ _3"></span></span>一个好友<span class="_ _3"></span><span class="ff5">聊天</span>时<span class="_ _3"></span>,此时<span class="_ _3"></span>自己的计<span class="_ _3"></span>算机和好</div><div class="t m0 x3 h9 y37 ff2 fs2 fc1 sc0 ls0 ws0">友的<span class="_ _3"></span>计<span class="_ _3"></span>算机<span class="_ _3"></span>都会<span class="_ _3"></span><span class="ff5">与<span class="_ _3"></span></span>服务<span class="_ _3"></span>器端<span class="_ _3"></span><span class="ff5">口<span class="_ _3"></span></span>连接<span class="_ _3"></span>,<span class="_ _3"></span><span class="ff5">但</span>是<span class="_ _3"></span>要互<span class="_ _3"></span>相<span class="_ _3"></span>发送<span class="_ _3"></span>消息<span class="_ _3"></span>,<span class="_ _3"></span>自己<span class="_ _3"></span>的计<span class="_ _3"></span>算<span class="_ _3"></span>机<span class="_ _3"></span><span class="ff5">必须</span></div><div class="t m0 x3 h9 y38 ff2 fs2 fc1 sc0 ls0 ws0">知<span class="ff5">道</span>好<span class="_ _3"></span>友计算机<span class="_ _3"></span>的<span class="_ _6"> </span><span class="ff3">IP<span class="_ _6"> </span><span class="ff5">地<span class="_ _3"></span>址</span></span>和端<span class="_ _3"></span><span class="ff5">口号才<span class="_ _3"></span></span>可以通信<span class="_ _3"></span>,这<span class="ff5">样<span class="_ _3"></span></span>的<span class="ff5">工作<span class="_ _3"></span></span>正是通<span class="_ _3"></span>过<span class="ff5">索</span>引<span class="_ _3"></span>服务</div><div class="t m0 x3 h9 y39 ff2 fs2 fc1 sc0 ls0 ws0">器来<span class="_ _3"></span><span class="ff5">告<span class="_ _3"></span></span>知对<span class="_ _3"></span>方的<span class="_ _3"></span><span class="ff3">-<span class="_ _3"></span>-</span>指<span class="_ _3"></span>的是<span class="_ _3"></span><span class="ff5">告<span class="_ _3"></span>诉</span>自<span class="_ _3"></span>己的<span class="_ _3"></span>计<span class="_ _3"></span>算机<span class="_ _3"></span>好友<span class="_ _3"></span>的<span class="_ _3"></span>计算<span class="_ _3"></span>机的<span class="_ _0"> </span><span class="ff3">IP<span class="_ _6"> </span><span class="ff5">地址<span class="_ _3"></span></span></span>和端<span class="_ _3"></span><span class="ff5">口<span class="_ _3"></span>号</span>,</div><div class="t m0 x3 h9 y3a ff5 fs2 fc1 sc0 ls0 ws0">告诉<span class="ff2">好<span class="_ _3"></span>友的计算<span class="_ _3"></span>机自己的<span class="_ _5"> </span><span class="ff3">IP<span class="_ _6"> </span></span></span>地址<span class="_ _3"></span><span class="ff2">和端</span>口<span class="_ _3"></span>号<span class="ff2">,这<span class="_ _3"></span></span>样双<span class="ff2">方<span class="_ _3"></span>就可以不<span class="_ _3"></span>通过服务<span class="_ _3"></span>器直接</span></div><div class="t m0 x3 h5 y3b ff2 fs2 fc1 sc0 ls0 ws0">通信了。)</div><div class="t m0 x3 h7 y3c ff3 fs3 fc1 sc0 ls0 ws0"> </div><div class="t m0 x3 ha y3d ff1 fs4 fc1 sc0 ls0 ws0">1.3 <span class="ff5 sc2">主流<span class="_ _5"> </span></span>P2P<span class="_ _5"> </span><span class="ff2 sc2">应用分<span class="ff5">类</span></span></div><div class="t m0 x3 h9 y3e ff3 fs2 fc1 sc0 ls0 ws0"> P2P <span class="_ _3"></span><span class="ff2">网络应用大<span class="ff5">致</span>可以分为<span class="ff5">三类<span class="_ _3"></span></span>—— </span>1. <span class="ff5">文<span class="ff2">件共享</span>类<span class="ff2">,</span>例<span class="ff2">如迅雷,<span class="_ _8"></span></span></span>BT<span class="_ _6"> </span><span class="ff2">等软件</span></div><div class="t m0 x3 h9 y3f ff2 fs2 fc1 sc0 ls0 ws0">都<span class="_ _3"></span>是<span class="_ _3"></span><span class="ff5">文<span class="_ _3"></span></span>件共<span class="_ _3"></span>享<span class="_ _3"></span><span class="ff5">类<span class="_ _3"></span></span>的<span class="_ _3"></span>应<span class="_ _3"></span>用<span class="_ _3"></span>。<span class="_ _3"></span> <span class="_ _3"></span><span class="ff3">2.<span class="_ _3"></span> <span class="_ _3"></span><span class="ff5">即<span class="_ _3"></span></span></span>时<span class="_ _3"></span>通<span class="_ _3"></span>信<span class="_ _3"></span><span class="ff5">类<span class="_ _3"></span></span>,<span class="_ _3"></span><span class="ff5">例<span class="_ _3"></span></span>如<span class="_ _5"> </span><span class="ff3">QQ</span>,<span class="_ _3"></span><span class="ff3">MSN<span class="_ _5"> </span></span>等软<span class="_ _3"></span>件<span class="_ _3"></span>都<span class="_ _3"></span>是<span class="_ _3"></span>属<span class="_ _3"></span>于<span class="_ _3"></span><span class="ff5">即</span></div><div class="t m0 x3 h9 y40 ff2 fs2 fc1 sc0 ls0 ws0">时通信<span class="ff5">类</span>。 <span class="ff3">3. </span>多<span class="ff5">媒体</span>传输<span class="ff5">类</span>,<span class="ff5">例</span>如在线<span class="ff5">视频</span>直<span class="ff5">播</span>软件,<span class="ff3">PPlive<span class="_ _6"> </span></span>等软件。</div><div class="t m0 x3 h9 y41 ff3 fs2 fc1 sc0 ls0 ws0"> <span class="ff5">从<span class="ff2">上面的分</span>类<span class="ff2">可以</span>看<span class="ff2">出,现在网络上</span>流<span class="ff2">行的软件都采用了<span class="_"> </span></span></span>P2P<span class="_ _4"> </span><span class="ff2">技术来实现的<span class="_ _3"></span>,</span></div><div class="t m0 x3 h9 y42 ff2 fs2 fc1 sc0 ls0 ws0"> <span class="_ _3"></span><span class="ff5">但</span>是<span class="_ _3"></span><span class="ff5">它<span class="_ _3"></span></span>们<span class="_ _3"></span>的实<span class="_ _3"></span>现<span class="_ _3"></span><span class="ff5">肯<span class="_ _3"></span></span>定不<span class="_ _3"></span>是<span class="_ _3"></span>单<span class="_ _3"></span><span class="ff5">纯<span class="_ _3"></span></span>的<span class="_ _3"></span>只采<span class="_ _3"></span>用<span class="_ _0"> </span><span class="ff3">P2P<span class="_ _6"> </span></span>技<span class="_ _3"></span>术<span class="_ _3"></span>来实<span class="_ _3"></span>现<span class="_ _3"></span>的<span class="_ _3"></span>,<span class="_ _3"></span> <span class="_ _3"></span>而是<span class="_ _3"></span>采<span class="_ _3"></span>用<span class="_ _3"></span>多种<span class="_ _3"></span>技</div><div class="t m0 x3 h9 y43 ff2 fs2 fc1 sc0 ls0 ws0">术<span class="_ _3"></span>来实<span class="_ _3"></span>现<span class="_ _3"></span>的<span class="_ _3"></span>,<span class="_ _3"></span> <span class="_ _3"></span>在<span class="_ _3"></span>下一<span class="_ _3"></span>专<span class="_ _3"></span>题<span class="_ _3"></span>中将<span class="_ _3"></span>介<span class="_ _3"></span>绍<span class="_ _3"></span><span class="ff5">利<span class="_ _3"></span></span>用<span class="_ _5"> </span><span class="ff3">T<span class="_ _1"></span>CP<span class="_ _3"></span><span class="ff2">,</span>UDP<span class="_ _5"> </span><span class="ff2">和<span class="_ _6"> </span></span>P2P<span class="_ _5"> </span><span class="ff2">等技<span class="_ _3"></span>术<span class="_ _3"></span>来实<span class="_ _3"></span>现<span class="_ _3"></span><span class="ff5">类<span class="_ _3"></span>似</span></span></span></div><div class="t m0 x3 h9 y44 ff3 fs2 fc1 sc0 ls0 ws0">QQ<span class="_ _6"> </span><span class="ff2">的<span class="_ _3"></span>一<span class="_ _3"></span>个<span class="_ _3"></span><span class="ff5">即<span class="_ _3"></span></span>时<span class="_ _3"></span>通<span class="_ _3"></span>信<span class="_ _3"></span>程<span class="_ _3"></span>序<span class="_ _3"></span>,<span class="_ _3"></span><span class="ff5">希<span class="_ _3"></span>望<span class="_ _3"></span></span>通<span class="_ _3"></span>过此<span class="_ _3"></span>程<span class="_ _3"></span>序<span class="_ _3"></span>可<span class="_ _3"></span>以<span class="_ _3"></span><span class="ff5">综<span class="_ _3"></span></span>合<span class="_ _3"></span>前<span class="_ _3"></span>面<span class="_ _3"></span>专<span class="_ _3"></span>题<span class="_ _3"></span>介绍<span class="_ _3"></span>的<span class="_ _3"></span>内<span class="_ _3"></span>容<span class="_ _3"></span>以<span class="_ _3"></span><span class="ff5">及</span></span></div><div class="t m0 x3 h9 y45 ff5 fs2 fc1 sc0 ls0 ws0">帮助<span class="ff2">大家对<span class="_ _6"> </span><span class="ff3">QQ<span class="_ _6"> </span></span>等软件的实现原理有了解。</span></div><div class="t m0 x3 h7 y46 ff3 fs3 fc1 sc0 ls0 ws0"> </div><div class="t m0 x3 ha y47 ff5 fs4 fc1 sc2 ls0 ws0">二<span class="ff2">、<span class="ff1 sc0">P2P<span class="_ _5"> </span></span>的基本原理</span></div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>