<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Flex the world &#187; Stratus</title>
	<atom:link href="http://www.flextheworld.com/tag/stratus/feed" rel="self" type="application/rss+xml" />
	<link>http://www.flextheworld.com</link>
	<description>Flex, AIR, FMS, P2P and Things......</description>
	<lastBuildDate>Fri, 10 Sep 2010 08:08:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>基于Stratus 2的P2P多人文件共享</title>
		<link>http://www.flextheworld.com/2010/08/stratus2-p2p-fileshare.html</link>
		<comments>http://www.flextheworld.com/2010/08/stratus2-p2p-fileshare.html#comments</comments>
		<pubDate>Thu, 05 Aug 2010 12:43:40 +0000</pubDate>
		<dc:creator>Kevin Luo</dc:creator>
				<category><![CDATA[Flex 迷你教程]]></category>
		<category><![CDATA[P2P]]></category>
		<category><![CDATA[未分类]]></category>
		<category><![CDATA[flash multicast]]></category>
		<category><![CDATA[flash player 10.1]]></category>
		<category><![CDATA[Stratus]]></category>

		<guid isPermaLink="false">http://www.flextheworld.com/?p=791</guid>
		<description><![CDATA[在我的上一篇Status 2的文章中给大家简单介绍了Stratus 2 一对多视频直播，今天给大家演示一下如何在NetGroup中共享文件。在原来的Strtuas 1 中，我们也可以发送文件，不过发送的方式很单一，只能通过NetStream.send的方式将文件发送给选定的对象。这样的文件发送问题很多。

发送过程中无法知道文件发送的情况。
很麻烦才可以将文件拆分发送。
发送的过程中很容易造成数据包丢失。
一次只能发送给一个用户，如果要发送到第二个用户，需要额外的连接。

以上这些问题因为Stratus 1 只支持点对点的传输，所以这些问题很难解决。而现在的Stratus 2，因为支持了Application level Multicast (应用层多播，关于应用层多播是什么因为不会影响我们的教程，这里就不多解释了，有兴趣的朋友可以问下google)，所以我们的文件发送变得更加的强大，或者说更加的P2P，具体来说有这些优点。

支持文件拆分发送。你可以将你的文件拆分至N份。
多用户间共享文件块 。A用户发送文件,B用户接收,C用户再接收时C用户从A与B中接收
相对稳定的传输 (因为Stratus 2 现在也是Beta阶段，我也没有试过真实环境下大量用户共享文件的情况所以稳定情况有待考证)
文件传输反馈。更方便的监控传送的过程

了解了以上这些，我们来看下面这个例子，代码我是在前一个例子的基础上添加，所以对已有的代码就不重复解释，只解释文件发送相关的代码。

文件发送过程

A从本地读取文件，切分成128K一个的大小，假设我们发送一个1MB的文件，那么就是9个文件块
A使用NetGroup.addHaveObject(0,9)发送文件, 9代表文件的快数。
B使用NetGroup.addWantObjects(index, index)来接收文件, 第一个index是当前的文件块，第二个index是需要到第几个文件块，我们的接收从0,0开始，我们在0文件块中保存文件的基本信息，名字，大小，等等。接收到0个文件快后，你可以直接接收剩下的全部文件块，比如NetGroup.addWantObjects(1, 9)，这样就直接接收剩全部文件块，如果NetGroup.addWantObjects(1, 1)表示你本次只需要再往下的一个文件块。
B在调用NetGroup.addWantObjects(index, index)后A会有事件响应，NetGroup.Replication.Request，在这个事件响应中A需要开始向要求文件的B发送文件 NetGroup.writeRequestedObject(event.info.requestID,p2pSharedObject.chunks[event.info.index])。 p2pSharedObject是我们发送的文件,requestID是B的地址，file.chunks[event.info.index]是需要写入的文件内容。
A发送文件时B响应事件NetGroup.Replication.Fetch.Result, B在事件中保存文件快，并继续重复#3步骤获取下一个文件快。如果文件块获取结束，保存本地。 （注意，B在获取文件块后可以使用#2的步骤将自己也变为文件发发布者）

Demo 操作
点击运行发布者
点击运行Viewer

先运行发布者，记住Gourp的名字，点击connect创建组
点击“共享文件”，随意选择一个文件。
运行Viewer，group中输入与发布者一样的Group.点击connect连接组
点击下载文件，下载发布者发送的文件。
你可以多开几个Viewer来一起接收文件。

需要注意的地方

?View Code ACTIONSCRIPT3     //允许Objecy Replication
     groupSpecifier.objectReplicationEnabled = true; //onConnect() function中设置


?View Code ACTIONSCRIPT3//设置replicationStrategy
netGroup.replicationStrategy = NetGroupReplicationStrategy.LOWEST_FIRST;//onNetGroupConnect() function中设置


?View Code ACTIONSCRIPT3//netStatusHandler中注意以下事件处理，接收和发送文件块
&#160;
case &#34;NetGroup.Replication.Fetch.Result&#34;: // e.info.index, e.info.object
&#160;
					//作为发布者已经接收的部分
					netGroup.addHaveObjects&#40;e.info.index,e.info.index&#41;;
					if&#40;e.info.code [...]]]></description>
			<content:encoded><![CDATA[<p>在我的上一篇Status 2的文章中给大家简单介绍了<a href="http://www.flextheworld.com/2010/02/flex-stratus-2-p2p.html" target="_blank">Stratus 2 一对多视频直播</a>，今天给大家演示一下如何在NetGroup中共享文件。在原来的Strtuas 1 中，我们也可以发送文件，不过发送的方式很单一，只能通过NetStream.send的方式将文件发送给选定的对象。这样的文件发送问题很多。</p>
<ol>
<li><span style="color: #ff0000;">发送过程中无法知道文件发送的情况。</span></li>
<li><span style="color: #ff0000;">很麻烦才可以将文件拆分发送。</span></li>
<li><span style="color: #ff0000;">发送的过程中很容易造成数据包丢失。</span></li>
<li><span style="color: #ff0000;">一次只能发送给一个用户，如果要发送到第二个用户，需要额外的连接。</span></li>
</ol>
<p>以上这些问题因为Stratus 1 只支持点对点的传输，所以这些问题很难解决。而现在的Stratus 2，因为支持了Application level Multicast (应用层多播，关于应用层多播是什么因为不会影响我们的教程，这里就不多解释了，有兴趣的朋友可以问下google)，所以我们的文件发送变得更加的强大，或者说更加的P2P，具体来说有这些优点。</p>
<ol>
<li><span style="color: #0000ff;">支持文件拆分发送。你可以将你的文件拆分至N份。</span></li>
<li><span style="color: #0000ff;">多用户间共享文件块 。A用户发送文件,B用户接收,C用户再接收时C用户从A与B中接收</span></li>
<li><span style="color: #0000ff;">相对稳定的传输 (因为Stratus 2 现在也是Beta阶段，我也没有试过真实环境下大量用户共享文件的情况所以稳定情况有待考证)</span></li>
<li><span style="color: #0000ff;">文件传输反馈。更方便的监控传送的过程</span></li>
</ol>
<p>了解了以上这些，我们来看下面这个例子，代码我是在前一个例子的基础上添加，所以对已有的代码就不重复解释，只解释文件发送相关的代码。</p>
<p><span id="more-791"></span></p>
<h2><strong>文件发送过程</strong></h2>
<ol>
<li>A从本地读取文件，切分成128K一个的大小，假设我们发送一个1MB的文件，那么就是9个文件块</li>
<li>A使用NetGroup.addHaveObject(0,9)发送文件, 9代表文件的快数。</li>
<li>B使用NetGroup.addWantObjects(index, index)来接收文件, 第一个index是当前的文件块，第二个index是需要到第几个文件块，我们的接收从0,0开始，我们在0文件块中保存文件的基本信息，名字，大小，等等。接收到0个文件快后，你可以直接接收剩下的全部文件块，比如NetGroup.addWantObjects(1, 9)，这样就直接接收剩全部文件块，如果NetGroup.addWantObjects(1, 1)表示你本次只需要再往下的一个文件块。</li>
<li>B在调用NetGroup.addWantObjects(index, index)后A会有事件响应，NetGroup.Replication.Request，在这个事件响应中A需要开始向要求文件的B发送文件 NetGroup.writeRequestedObject(event.info.requestID,p2pSharedObject.chunks[event.info.index])。 p2pSharedObject是我们发送的文件,requestID是B的地址，file.chunks[event.info.index]是需要写入的文件内容。</li>
<li>A发送文件时B响应事件NetGroup.Replication.Fetch.Result, B在事件中保存文件快，并继续重复#3步骤获取下一个文件快。如果文件块获取结束，保存本地。 （注意，B在获取文件块后可以使用#2的步骤将自己也变为文件发发布者）</li>
</ol>
<h2><strong>Demo 操作</strong></h2>
<p><a href="http://www.flextheworld.com/demo/stratus2-fileshare/Publisher.html" target="_blank"><span style="color: #ff0000;"><span style="color: #000000;"><strong><span style="color: #ff0000;">点击运行发布者</span></strong></span></span></a></p>
<p><a href="http://www.flextheworld.com/demo/stratus2-fileshare/Viewer.html" target="_blank"><span style="color: #ff0000;"><span style="color: #000000;"><strong><span style="color: #ff0000;">点击运行Viewer</span></strong></span></span></a></p>
<ol>
<li>先运行发布者，记住Gourp的名字，点击connect创建组</li>
<li>点击“共享文件”，随意选择一个文件。</li>
<li>运行Viewer，group中输入与发布者一样的Group.点击connect连接组</li>
<li>点击下载文件，下载发布者发送的文件。</li>
<li>你可以多开几个Viewer来一起接收文件。</li>
</ol>
<h2>需要注意的地方</h2>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p791code4'); return false;">View Code</a> ACTIONSCRIPT3</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p7914"><td class="code" id="p791code4"><pre class="actionscript3" style="font-family:monospace;">     <span style="color: #009900; font-style: italic;">//允许Objecy Replication</span>
     groupSpecifier<span style="color: #000066; font-weight: bold;">.</span>objectReplicationEnabled = <span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">;</span> <span style="color: #009900; font-style: italic;">//onConnect() function中设置</span></pre></td></tr></table></div>


<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p791code5'); return false;">View Code</a> ACTIONSCRIPT3</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p7915"><td class="code" id="p791code5"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #009900; font-style: italic;">//设置replicationStrategy</span>
netGroup<span style="color: #000066; font-weight: bold;">.</span>replicationStrategy = NetGroupReplicationStrategy<span style="color: #000066; font-weight: bold;">.</span>LOWEST_FIRST<span style="color: #000066; font-weight: bold;">;</span><span style="color: #009900; font-style: italic;">//onNetGroupConnect() function中设置</span></pre></td></tr></table></div>


<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p791code6'); return false;">View Code</a> ACTIONSCRIPT3</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p7916"><td class="code" id="p791code6"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #009900; font-style: italic;">//netStatusHandler中注意以下事件处理，接收和发送文件块</span>
&nbsp;
<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #990000;">&quot;NetGroup.Replication.Fetch.Result&quot;</span><span style="color: #000066; font-weight: bold;">:</span> <span style="color: #009900; font-style: italic;">// e.info.index, e.info.object</span>
&nbsp;
					<span style="color: #009900; font-style: italic;">//作为发布者已经接收的部分</span>
					netGroup<span style="color: #000066; font-weight: bold;">.</span>addHaveObjects<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">index</span><span style="color: #000066; font-weight: bold;">,</span>e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">index</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span><span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">code</span> <span style="color: #000066; font-weight: bold;">!</span>= <span style="color: #990000;">&quot;NetGroup.Replication.Fetch.Result&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
						<span style="color: #0033ff; font-weight: bold;">break</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
&nbsp;
					<span style="color: #009900; font-style: italic;">//接收文件</span>
					p2pSharedObject<span style="color: #000066; font-weight: bold;">.</span>chunks<span style="color: #000000;">&#91;</span>e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">index</span><span style="color: #000000;">&#93;</span> = e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span>object<span style="color: #000066; font-weight: bold;">;</span>
					updateStatus<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;正在接收第&quot;</span><span style="color: #000066; font-weight: bold;">+</span>e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">index</span><span style="color: #000066; font-weight: bold;">+</span><span style="color: #990000;">&quot;块文件&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
					<span style="color: #0033ff; font-weight: bold;">if</span><span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">index</span> == <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
						p2pSharedObject<span style="color: #000066; font-weight: bold;">.</span>packetLenght = <a href="http://www.google.com/search?q=number%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:number.html"><span style="color: #004993;">Number</span></a><span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span>object<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
						p2pSharedObject<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">name</span> = e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span>object<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">name</span><span style="color: #000066; font-weight: bold;">;</span>
						updateStatus<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;要接收的文件有: &quot;</span><span style="color: #000066; font-weight: bold;">+</span>p2pSharedObject<span style="color: #000066; font-weight: bold;">.</span>packetLenght<span style="color: #000066; font-weight: bold;">+</span><span style="color: #990000;">&quot;块文件&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
						receiveObject<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
					<span style="color: #000000;">&#125;</span><span style="color: #0033ff; font-weight: bold;">else</span><span style="color: #000000;">&#123;</span>
						<span style="color: #0033ff; font-weight: bold;">if</span><span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">index</span><span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">&lt;</span>p2pSharedObject<span style="color: #000066; font-weight: bold;">.</span>packetLenght<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
							receiveObject<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">index</span><span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
						<span style="color: #000000;">&#125;</span><span style="color: #0033ff; font-weight: bold;">else</span><span style="color: #000000;">&#123;</span>
							updateStatus<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;文件接收完毕&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
							updateStatus<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;接收了: &quot;</span><span style="color: #000066; font-weight: bold;">+</span>p2pSharedObject<span style="color: #000066; font-weight: bold;">.</span>packetLenght<span style="color: #000066; font-weight: bold;">+</span><span style="color: #990000;">&quot;块文件&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
							p2pSharedObject<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">data</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <a href="http://www.google.com/search?q=bytearray%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:bytearray.html"><span style="color: #004993;">ByteArray</span></a><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
							<span style="color: #0033ff; font-weight: bold;">for</span><span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><a href="http://www.google.com/search?q=int%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:int.html"><span style="color: #004993;">int</span></a> = <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>i<span style="color: #000066; font-weight: bold;">&lt;</span>p2pSharedObject<span style="color: #000066; font-weight: bold;">.</span>packetLenght<span style="color: #000066; font-weight: bold;">;</span>i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
								p2pSharedObject<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">data</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">writeBytes</span><span style="color: #000000;">&#40;</span>p2pSharedObject<span style="color: #000066; font-weight: bold;">.</span>chunks<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
							<span style="color: #000000;">&#125;</span>
&nbsp;
							updateStatus<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;字节长度: &quot;</span><span style="color: #000066; font-weight: bold;">+</span>p2pSharedObject<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">data</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
							Alert<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">show</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;保存文件&quot;</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #990000;">&quot;文件下载完毕，是否保存?&quot;</span><span style="color: #000066; font-weight: bold;">,</span>Alert<span style="color: #000066; font-weight: bold;">.</span>YES<span style="color: #000066; font-weight: bold;">|</span>Alert<span style="color: #000066; font-weight: bold;">.</span>NO<span style="color: #000066; font-weight: bold;">,</span><span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000066; font-weight: bold;">,</span>saveFileHandelr<span style="color: #000000;">&#41;</span>
&nbsp;
						<span style="color: #000000;">&#125;</span>
					<span style="color: #000000;">&#125;</span>
&nbsp;
					<span style="color: #0033ff; font-weight: bold;">break</span><span style="color: #000066; font-weight: bold;">;</span>
                <span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #990000;">&quot;NetGroup.Replication.Request&quot;</span><span style="color: #000066; font-weight: bold;">:</span> <span style="color: #009900; font-style: italic;">// e.info.index, e.info.requestID</span>
					<span style="color: #009900; font-style: italic;">//同时作为发布者</span>
					netGroup<span style="color: #000066; font-weight: bold;">.</span>writeRequestedObject<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span>requestID<span style="color: #000066; font-weight: bold;">,</span>p2pSharedObject<span style="color: #000066; font-weight: bold;">.</span>chunks<span style="color: #000000;">&#91;</span>e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">index</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span>
					updateStatus<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;接收方ID: &quot;</span><span style="color: #000066; font-weight: bold;">+</span>e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span>requestID<span style="color: #000066; font-weight: bold;">+</span><span style="color: #990000;">&quot;, 需要的文件块: &quot;</span><span style="color: #000066; font-weight: bold;">+</span>e<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">info</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">index</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #0033ff; font-weight: bold;">break</span><span style="color: #000066; font-weight: bold;">;</span></pre></td></tr></table></div>

<h2>源文件下载</h2>
<a class="downloadlink" href="http://www.flextheworld.com/wp-content/plugins/download-monitor/download.php?id=26" title=" downloaded 56 times" >Stratus2FileSharing (56)</a>
<h2>相关资源</h2>
<ol>
<li><a title="Permalink to Flex 迷你教程 — 基于Stratus的P2P网络电话 (1)" rel="bookmark" href="http://www.flextheworld.com/2009/01/flex-stratus-p2p-phone.html">Flex 迷你教程 — 基于Stratus的P2P网络电话 (1)</a></li>
<li><a title="Permalink to Flex 迷你教程 — 基于Stratus的P2P网络电话 (2)" rel="bookmark" href="http://www.flextheworld.com/2009/01/flex-stratus-phone-2.html">Flex 迷你教程 — 基于Stratus的P2P网络电话 (2)</a></li>
<li><a href="http://www.flextheworld.com/2009/01/flex-stratus-phone-3.html" target="_blank">Flex 迷你教程 — 基于Stratus的P2P网络电话 (3)</a></li>
<li><a title="Permanent Link to Flex 迷你教程 — 基于Stratus 2的P2P在线视频共享1 (NetGroup, Multicast实例)" rel="bookmark" href="http://www.flextheworld.com/2010/02/flex-stratus-2-p2p.html">Flex 迷你教程 — 基于Stratus 2的P2P一对多视频直播 (NetGroup, Multicast实例)</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.flextheworld.com/2010/08/stratus2-p2p-fileshare.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>P2P在线视频面试插件</title>
		<link>http://www.flextheworld.com/2010/06/p2p-interview-onlin.html</link>
		<comments>http://www.flextheworld.com/2010/06/p2p-interview-onlin.html#comments</comments>
		<pubDate>Mon, 14 Jun 2010 08:18:18 +0000</pubDate>
		<dc:creator>Kevin Luo</dc:creator>
				<category><![CDATA[我的事]]></category>
		<category><![CDATA[flash player 10.1]]></category>
		<category><![CDATA[P2P]]></category>
		<category><![CDATA[Stratus]]></category>
		<category><![CDATA[在线面试]]></category>

		<guid isPermaLink="false">http://www.flextheworld.com/?p=734</guid>
		<description><![CDATA[最近开发的一个视频面试插件，可以很容易的嵌入到任何需要该插件的网站（网站方需要自己写一个大概100行的服务器端API用以和你们的用户关联），网站可以是任意类型，PHP, .NET, JSP, 等等

因为每次有这样类似的开发，都是直接教客户写api, 然后直接连到他们的站上，所以导致我现在自己不能Demo    这几天有空的时候我可能还是会挂一个Demo出来, 需要定制插件的朋友可以和我联系：)
]]></description>
			<content:encoded><![CDATA[<p>最近开发的一个视频面试插件，可以很容易的嵌入到任何需要该插件的网站（网站方需要自己写一个大概100行的服务器端API用以和你们的用户关联），网站可以是任意类型，PHP, .NET, JSP, 等等</p>
<p><a href="http://www.flextheworld.com/wp-content/uploads/2010/06/screen.jpg" rel="shadowbox[post-734];player=img;"><img class="alignnone size-full wp-image-735" title="screen" src="http://www.flextheworld.com/wp-content/uploads/2010/06/screen.jpg" alt="" width="736" height="365" /></a></p>
<p>因为每次有这样类似的开发，都是直接教客户写api, 然后直接连到他们的站上，所以导致我现在自己不能Demo <img src='http://www.flextheworld.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />   这几天有空的时候我可能还是会挂一个Demo出来, 需要定制插件的朋友可以和我联系：)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flextheworld.com/2010/06/p2p-interview-onlin.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>6小时复制chatroulette.com</title>
		<link>http://www.flextheworld.com/2010/04/6hour-chatroulette-wallperson.html</link>
		<comments>http://www.flextheworld.com/2010/04/6hour-chatroulette-wallperson.html#comments</comments>
		<pubDate>Tue, 06 Apr 2010 11:12:25 +0000</pubDate>
		<dc:creator>Kevin Luo</dc:creator>
				<category><![CDATA[P2P]]></category>
		<category><![CDATA[我的事]]></category>
		<category><![CDATA[FTMFP]]></category>
		<category><![CDATA[Stratus]]></category>

		<guid isPermaLink="false">http://www.flextheworld.com/?p=720</guid>
		<description><![CDATA[这个小项目是一个印度小伙找上来的，要求我帮他做一个和chatroulette一样的网站。chatroulette在他找我前我就看过。实际是上在原来很有名的omegle出现以后我们就基于RTMFP做了和chatroulette一样的随机视频网站，并且扩展成了支持一对多，多对多聊天的halowei.com(比chatroulette要早好几个月). 无奈宣传实在是我们的弱项，以至于halowei.com现在也就只能一直很冷清的放那了（很凄凉的感觉啊），不过这个项目确实对我们的外包事业有比较大帮助，再怎么说我也算是国内玩RTMFP的第一批人了（很不要脸的跨自己啊），呵呵。话说回来这个项目，利用两个晚上的时间帮他完成了这个项目(www.wallperson.com)，不知道这个网站的人气会如何，走着瞧吧。

]]></description>
			<content:encoded><![CDATA[<p>这个小项目是一个印度小伙找上来的，要求我帮他做一个和chatroulette一样的网站。chatroulette在他找我前我就看过。实际是上在原来很有名的omegle出现以后我们就基于RTMFP做了和chatroulette一样的随机视频网站，并且扩展成了支持一对多，多对多聊天的<a href="http://halowei.com">halowei.com</a>(比chatroulette要早好几个月). 无奈宣传实在是我们的弱项，以至于halowei.com现在也就只能一直很冷清的放那了（很凄凉的感觉啊），不过这个项目确实对我们的外包事业有比较大帮助，再怎么说我也算是国内玩RTMFP的第一批人了（很不要脸的跨自己啊），呵呵。话说回来这个项目，利用两个晚上的时间帮他完成了这个项目(<a href="http://wallperson.com">www.wallperson.com</a>)，不知道这个网站的人气会如何，走着瞧吧。</p>
<p><img class="alignnone size-full wp-image-721" title="1" src="http://www.flextheworld.com/wp-content/uploads/2010/04/1.GIF" alt="1" width="736" height="369" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flextheworld.com/2010/04/6hour-chatroulette-wallperson.html/feed</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Flex 迷你教程 — 基于Stratus 2的P2P一对多视频直播 (NetGroup, Multicast实例)</title>
		<link>http://www.flextheworld.com/2010/02/flex-stratus-2-p2p.html</link>
		<comments>http://www.flextheworld.com/2010/02/flex-stratus-2-p2p.html#comments</comments>
		<pubDate>Wed, 24 Feb 2010 08:46:29 +0000</pubDate>
		<dc:creator>Kevin Luo</dc:creator>
				<category><![CDATA[Flex 迷你教程]]></category>
		<category><![CDATA[P2P]]></category>
		<category><![CDATA[未分类]]></category>
		<category><![CDATA[flash player 10.1]]></category>
		<category><![CDATA[Stratus]]></category>

		<guid isPermaLink="false">http://www.flextheworld.com/?p=691</guid>
		<description><![CDATA[终于有时间试下Strtaus 2的p2p多播功能了。之前看的视频介绍中，Adobe描述一个非常理想的多人P2P数据共享方式。但是今天试了一下后发现视频的速度非常慢（视频的发布和接收端都在一台机器上），感觉上视频被发送到了什么地方后才传了回来。这这&#8230;&#8230;好吧，就当是BETA的问题了，WAIT AND SEE. (2/25日更新，2/23日发布的Flash player 10.1 beta 3 看来解决了这个问题，Demo的速度现在非常正常)
准备工作:
先了解一下什么是stratus以及什么是RTMFP，你可以到http://labs.adobe.com/technologies/stratus/看下官方的解释或者直接看我原来的 Flex 迷你教程 — 基于Stratus的P2P网络电话 (1)(2)(3) 先学习一下Flash p2p的基础. 简单的说原来的Stratus 实现了flash player之间点对点的传输数据，而今天要讲的stratus 2 不仅支持单个的点对点数据传说，还引入了多播的概念。
在原来的stratus中如果我们要做一个多人同时在线的应用，比如多人视频。那么我们需要把在线的所有人都链接起来，类似蜘蛛网的结构，网中的每个人需要与其他所有人链接，这样数据才能在所有人中共享。这种模式在多人连线中是不可取的。假设我们用户A发布一个视频想让其他10个用户观看，那么10个用户都需要链接到他。就中国的普通用户的网络带宽来说，这就是极限了。而Stratus 2 中 “组” 的概念解决了这个问题。用户A发布视频让同一个组中的其他10个人观看。他们并都从A处获取视频。而有可能通过组中的其他用户获取A的视频。这也就是P2P的模式了，每个人都可以作为数据的发出者，数据以最优的方式被观看者收到，参与的人越多，数据的副本就越多。视频的速度也就越快。


确定你安装了 Flex SDK3.2 以上的SDK (现在最新的是3.5). 这里下载
确定安装了flash payer 10.1 debug version (开发环境最好用debug version)  这里下载
申请一个 Stratus develper key 这里申请
下载flash player 10.1 的 Player Global SWC  这里下载，放到你的SDK3.2目录下面吧
导入下面的Demo源文件，编辑项目属性 — Flex compiler — Require Flash player version 到 10:1:0
编辑项目属性 [...]]]></description>
			<content:encoded><![CDATA[<p>终于有时间试下Strtaus 2的p2p多播功能了。之前看的视频介绍中，Adobe描述一个非常理想的多人P2P数据共享方式。但是今天试了一下后发现视频的速度非常慢（视频的发布和接收端都在一台机器上），感觉上视频被发送到了什么地方后才传了回来。这这&#8230;&#8230;好吧，就当是BETA的问题了，WAIT AND SEE. <strong><span style="color: #ff0000;">(2/25日更新，2/23日发布的Flash player 10.1 beta 3 看来解决了这个问题，Demo的速度现在非常正常)</span></strong></p>
<h2>准备工作:</h2>
<p><span style="font-weight: normal; font-size: 13px;">先了解一下什么是stratus以及什么是RTMFP，你可以到<a href="http://labs.adobe.com/technologies/stratus/">http://labs.adobe.com/technologies/stratus/</a>看下官方的解释或者直接看我原来的 <a href="http://www.flextheworld.com/2009/01/flex-stratus-p2p-phone.html">Flex 迷你教程 — 基于Stratus的P2P网络电话 (1)(2)(3</a>) 先学习一下Flash p2p的基础. 简单的说原来的Stratus 实现了flash player之间点对点的传输数据，而今天要讲的stratus 2 不仅支持单个的点对点数据传说，还引入了多播的概念。</span></p>
<p><span style="font-weight: normal; font-size: 13px;">在原来的stratus中如果我们要做一个多人同时在线的应用，比如多人视频。那么我们需要把在线的所有人都链接起来，类似蜘蛛网的结构，网中的每个人需要与其他所有人链接，这样数据才能在所有人中共享。这种模式在多人连线中是不可取的。假设我们用户A发布一个视频想让其他10个用户观看，那么10个用户都需要链接到他。就中国的普通用户的网络带宽来说，这就是极限了。而Stratus 2 中 “组” 的概念解决了这个问题。用户A发布视频让同一个组中的其他10个人观看。他们并都从A处获取视频。而有可能通过组中的其他用户获取A的视频。这也就是P2P的模式了，每个人都可以作为数据的发出者，数据以最优的方式被观看者收到，参与的人越多，数据的副本就越多。视频的速度也就越快。<span id="more-691"></span><br />
</span></p>
<ol>
<li>确定你安装了 Flex SDK3.2 以上的SDK (现在最新的是3.5). <a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;" href="http://www.adobe.com/products/flex/flexdownloads/" target="_blank">这里下载</a></li>
<li>确定安装了flash payer 10.1 debug version (开发环境最好用debug version)  <a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;" href="http://labs.adobe.com/downloads/flashplayer10.html" target="_blank">这里下载</a></li>
<li>申请一个 Stratus develper key <a style="outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 13px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #000000; background-position: initial initial; background-repeat: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;" href="https://www.adobe.com/cfusion/entitlement/index.cfm?e=stratus" target="_blank">这里申请</a></li>
<li>下载flash player 10.1 的 Player Global SWC  <a href="http://download.macromedia.com/pub/labs/flashplayer10/flashplayer10_globalswc.zip">这里下载</a>，放到你的SDK3.2目录下面吧</li>
<li>导入下面的Demo源文件，编辑项目属性 — Flex compiler — Require Flash player version 到 10:1:0</li>
<li>编辑项目属性 &#8212; Flex Builder Path &#8212; Library Path &#8212; Add SWC. 添加你刚才下载的playerglobal.swc &#8212;- 添加后双击playerglobal.swc &#8212; 双击Link Type &#8212; 切换Link Type到External</li>
</ol>
<p>好了，准备工作到此结束。</p>
<h2><strong>Demo操作</strong></h2>
<p>Demo 是一个视频共享的程序，用户A发布一个视频，其他进入相同组的用户可以观看视频，观看视频的同时大家可以文字聊天</p>
<ol>
<li>先运行Publisher.mxml. 点击链接 （记住Group 名字，一会要用）</li>
<li>运行Viewer.mxml, 输入刚才的Group 名字，点链接。</li>
<li>你可以运行多个Viewer,输入相同的Group名，链接进去同一个组</li>
<li>链接成功后Viewer可以看见Publisher发布的视频。下面的聊天框可以和所有人聊天。</li>
</ol>
<h2><strong>代码说明</strong></h2>
<p>具体的代码说明大家下载源文件看注释就好了（看Publisher的注释）。这里只说一下Publisher和Viewer的区别，Publisher是作为视频的发布者以及Group的参与者（注意他并不是Gruop的&#8221;老大&#8221;，Group对这里的任何人来说都是平等的，Publisher只是在里面发布了视频而已）。Viewer是视频的接收者以及Group的参与者。下面的代码指出了Viewer和Publisher的不同</p>
<p><strong>Publisher发布视频</strong></p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p691code9'); return false;">View Code</a> ACTIONSCRIPT3</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p6919"><td class="code" id="p691code9"><pre class="actionscript3" style="font-family:monospace;">           <span style="color: #3f5fbf;">/**
            *
            * NetStraeam链接到用户组后触发
            * */</span>
            <span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> onNetStreamConnect<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
            <span style="color: #000000;">&#123;</span>
            	<span style="color: #009900; font-style: italic;">//加载话筒</span>
                netStream<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">client</span> = <span style="color: #0033ff; font-weight: bold;">this</span><span style="color: #000066; font-weight: bold;">;</span>
                <span style="color: #6699cc; font-weight: bold;">var</span> mic<span style="color: #000066; font-weight: bold;">:</span><a href="http://www.google.com/search?q=microphone%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:microphone.html"><span style="color: #004993;">Microphone</span></a> = <a href="http://www.google.com/search?q=microphone%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:microphone.html"><span style="color: #004993;">Microphone</span></a><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">getMicrophone</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                <span style="color: #0033ff; font-weight: bold;">if</span><span style="color: #000000;">&#40;</span>mic<span style="color: #000000;">&#41;</span>
                <span style="color: #000000;">&#123;</span>
                    mic<span style="color: #000066; font-weight: bold;">.</span>codec = SoundCodec<span style="color: #000066; font-weight: bold;">.</span>SPEEX<span style="color: #000066; font-weight: bold;">;</span>
                    mic<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">setSilenceLevel</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
                    netStream<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">attachAudio</span><span style="color: #000000;">&#40;</span>mic<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
                    updateStatus<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;话筒设置完毕<span style="">\n</span>&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                <span style="color: #000000;">&#125;</span>
                <span style="color: #009900; font-style: italic;">//加载视频，并发布视频和话筒</span>
                publishVideo<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
            <span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p><strong>Viewer接收视频</strong></p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p691code10'); return false;">View Code</a> ACTIONSCRIPT3</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p69110"><td class="code" id="p691code10"><pre class="actionscript3" style="font-family:monospace;">            <span style="color: #3f5fbf;">/**
            *
            * NetStraeam链接到用户组后触发
            * */</span>
            <span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> onNetStreamConnect<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
            <span style="color: #000000;">&#123;</span>
                netStream<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">client</span> = <span style="color: #0033ff; font-weight: bold;">this</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
                <span style="color: #0033ff; font-weight: bold;">if</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">null</span> <span style="color: #000066; font-weight: bold;">!</span>= video<span style="color: #000000;">&#41;</span>
                <span style="color: #000000;">&#123;</span>
                    videoDisplay<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">removeChild</span><span style="color: #000000;">&#40;</span>video<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                    video = <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000066; font-weight: bold;">;</span>
                <span style="color: #000000;">&#125;</span>
&nbsp;
                video = <span style="color: #0033ff; font-weight: bold;">new</span> <a href="http://www.google.com/search?q=video%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:video.html"><span style="color: #004993;">Video</span></a><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                video<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">smoothing</span> = <span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">;</span>
                video<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">attachNetStream</span><span style="color: #000000;">&#40;</span>netStream<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                videoDisplay<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>video<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
                <span style="color: #009900; font-style: italic;">//播放视频</span>
                netStream<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">play</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;stream&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                netStream<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">bufferTime</span> = <span style="color: #000000; font-weight:bold;">1.0</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<h2>Demo截图</h2>
<p><strong>Publisher</strong></p>
<p><img class="alignnone size-full wp-image-694" title="a" src="http://www.flextheworld.com/wp-content/uploads/2010/02/a.png" alt="a" width="641" height="498" /></p>
<p><strong>Viewer</strong></p>
<p><img class="alignnone size-full wp-image-695" title="b" src="http://www.flextheworld.com/wp-content/uploads/2010/02/b.png" alt="b" width="642" height="547" /></p>
<h2>源代码下载</h2>
<a class="downloadlink" href="http://www.flextheworld.com/wp-content/plugins/download-monitor/download.php?id=24" title=" downloaded 480 times" >Stratus2Demo (480)</a>
]]></content:encoded>
			<wfw:commentRss>http://www.flextheworld.com/2010/02/flex-stratus-2-p2p.html/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Stratus 服务升级，完全支持RTFMP Groups以及P2P多播</title>
		<link>http://www.flextheworld.com/2010/01/stratus-group-p2p.html</link>
		<comments>http://www.flextheworld.com/2010/01/stratus-group-p2p.html#comments</comments>
		<pubDate>Sat, 23 Jan 2010 13:24:58 +0000</pubDate>
		<dc:creator>Kevin Luo</dc:creator>
				<category><![CDATA[P2P]]></category>
		<category><![CDATA[flash multicast]]></category>
		<category><![CDATA[Stratus]]></category>

		<guid isPermaLink="false">http://www.flextheworld.com/?p=680</guid>
		<description><![CDATA[太激动了，等这天等了好久了，Adobe 2008年发布了Stratus服务器的Beta版，支持flash player之间的点对点链接，今天，Adobe再次更新Status服务，这一更新也使Flash真正进入P2P的世界。现在Adobe的例子还没有出来，感兴趣的朋友可以关注以下几个地方 (引自 http://www.flashrealtime.com/updated-stratus-with-groups-and-multicast/):
- Read more about new Stratus here at Kevin’s blog.
- Also check new Labs page about RTMFP Groups.
- My article about Multicast in Flash Player 10.1
- Read about differences between Stratus and LCCS
]]></description>
			<content:encoded><![CDATA[<p>太激动了，等这天等了好久了，Adobe 2008年发布了Stratus服务器的Beta版，支持flash player之间的点对点链接，今天，Adobe再次更新Status服务，这一更新也使Flash真正进入P2P的世界。现在Adobe的例子还没有出来，感兴趣的朋友可以关注以下几个地方 (引自 http://www.flashrealtime.com/updated-stratus-with-groups-and-multicast/):</p>
<p>- Read more about new Stratus <a style="padding-top: 0px; padding-right: 0px; padding-bottom: 1px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-style: inherit; font-family: inherit; color: #cb0100; text-decoration: none; border-bottom-style: solid; border-bottom-color: #dddddd; margin: 0px;" onclick="javascript:pageTracker._trackPageview ('/outbound/blogs.adobe.com');" href="http://blogs.adobe.com/ktowes/2010/01/rtmfp_groups_multicast_now_ava.html">here at Kevin’s blog</a>.<br />
- Also check <a style="padding-top: 0px; padding-right: 0px; padding-bottom: 1px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-style: inherit; font-family: inherit; color: #cb0100; text-decoration: none; border-bottom-style: solid; border-bottom-color: #dddddd; margin: 0px;" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.adobe.com');" href="http://labs.adobe.com/technologies/stratus/rtmfpgroups.html">new Labs page about RTMFP Groups</a>.<br />
- <a style="padding-top: 0px; padding-right: 0px; padding-bottom: 1px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-style: inherit; font-family: inherit; color: #cb0100; text-decoration: none; border-bottom-style: solid; border-bottom-color: #dddddd; margin: 0px;" href="http://www.flashrealtime.com/peer-to-peer-multicast-in-new-flash-player-101/">My article</a> about Multicast in Flash Player 10.1<br />
- <a style="padding-top: 0px; padding-right: 0px; padding-bottom: 1px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-style: inherit; font-family: inherit; color: #cb0100; text-decoration: none; border-bottom-style: solid; border-bottom-color: #dddddd; margin: 0px;" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');" href="http://www.adobe.com/devnet/flashmediaserver/articles/p2p_apps_stratus_lccs.html)">Read about differences between Stratus and LCCS</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flextheworld.com/2010/01/stratus-group-p2p.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Flash P2P的一对一，一对多，以及多对多的应用</title>
		<link>http://www.flextheworld.com/2009/09/flash-p2p-1on1-1onn-nonn.html</link>
		<comments>http://www.flextheworld.com/2009/09/flash-p2p-1on1-1onn-nonn.html#comments</comments>
		<pubDate>Sun, 06 Sep 2009 15:27:37 +0000</pubDate>
		<dc:creator>Kevin Luo</dc:creator>
				<category><![CDATA[P2P]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Stratus]]></category>

		<guid isPermaLink="false">http://www.flextheworld.com/?p=617</guid>
		<description><![CDATA[FlashPlayer 10 增加了对P2P的支持，尽管现在Stratus server仍处在BETA阶段，但我们还是希望充分的利用Flash 的P2P功能做些事情，于是我们尝试性的做了一个基于P2P的以在线视频交流为主的网站www.halowei.com.
我们尝试了p2p的一对一，一对多，以及多对多的应用，基本上我们对flash的p2p链接表现还是比较满意的，不过现在的p2p实际上只能算是点对点连接，因为它不支持对视频，音频流的转发，这样就不能发挥p2p的长处，现在一个很大的好处就是能节约服务器的资源，但是在多对多连接时，客户端的宽带消耗是一个比较大的问题。期望以后能Flash能真正的P2P.
这里http://www.halowei.com/#u=老白&#38;m=成都合江亭街景是一个对多的演示，我们做了一个直播室，允许用户直播视频，并设定观众的人数。有兴趣的朋友可以试试。
最后如果有兴趣于我们讨论Flash P2P的朋友可以在这里留言或者邮件team@halowei.com
]]></description>
			<content:encoded><![CDATA[<p>FlashPlayer 10 增加了对P2P的支持，尽管现在Stratus server仍处在BETA阶段，但我们还是希望充分的利用Flash 的P2P功能做些事情，于是我们尝试性的做了一个基于P2P的以在线视频交流为主的网站www.halowei.com.</p>
<p>我们尝试了p2p的一对一，一对多，以及多对多的应用，基本上我们对flash的p2p链接表现还是比较满意的，不过现在的p2p实际上只能算是点对点连接，因为它不支持对视频，音频流的转发，这样就不能发挥p2p的长处，现在一个很大的好处就是能节约服务器的资源，但是在多对多连接时，客户端的宽带消耗是一个比较大的问题。期望以后能Flash能真正的P2P.</p>
<p>这里<a style="color: #002d93; text-decoration: none;" title="http://www.halowei.com/#u=老白&amp;m=成都合江亭街景" href="http://www.halowei.com/#u=%E8%80%81%E7%99%BD&amp;m=%E6%88%90%E9%83%BD%E5%90%88%E6%B1%9F%E4%BA%AD%E8%A1%97%E6%99%AF" target="_blank">http://www.halowei.com/#u=老白&amp;m=成都合江亭街景</a>是一个对多的演示，我们做了一个直播室，允许用户直播视频，并设定观众的人数。有兴趣的朋友可以试试。</p>
<p>最后如果有兴趣于我们讨论Flash P2P的朋友可以在这里留言或者邮件team@halowei.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flextheworld.com/2009/09/flash-p2p-1on1-1onn-nonn.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Call Me 更新</title>
		<link>http://www.flextheworld.com/2009/04/call-me-ui-update.html</link>
		<comments>http://www.flextheworld.com/2009/04/call-me-ui-update.html#comments</comments>
		<pubDate>Wed, 15 Apr 2009 14:19:22 +0000</pubDate>
		<dc:creator>Kevin Luo</dc:creator>
				<category><![CDATA[Call Me]]></category>
		<category><![CDATA[Call Me 帮助与技巧]]></category>
		<category><![CDATA[P2P]]></category>
		<category><![CDATA[Plug in]]></category>
		<category><![CDATA[Stratus]]></category>
		<category><![CDATA[博客视频聊天]]></category>

		<guid isPermaLink="false">http://www.flextheworld.com/?p=487</guid>
		<description><![CDATA[最近因为一直忙于工作，只有很少的时间可以更新Call Me，今天主要对UI进行了一些更新:


头像左对齐 &#8212; 因为Call Me的最小宽度是220px, 很多用户的博客中Call me都超出了插件栏，因此将头像对齐到插件栏的左边。
去掉顶部呼叫提示的边框 &#8212; 边框因为是对话框的样式，只适合于Call Me的默认头像，在方形头像时会很不协调，因此去掉。
所有提示框中去掉 “博主” 字样, 将昵称显示在提示信息中 &#8212; 博主太局限于博客使用，一些用户希望把Call me用于自己的网站或当作客服使用时会很别扭，在现在没有时间做专业的客服版时，这样的修改让Call Me的适用度更大。

Bug fix:

修复了在头像设置错误时无法重新进入设置的问题。
一个错字。

小提示:

修改插件代码中的nameColor可以改变提示字体的颜色。
插件代码中设置wmode=&#8221;true&#8221;可以让背景透明。

点击获取你的Call Me
]]></description>
			<content:encoded><![CDATA[<p>最近因为一直忙于工作，只有很少的时间可以更新Call Me，今天主要对UI进行了一些更新:</p>
<p style="text-align: center;"><img class="size-full wp-image-488 aligncenter" title="a" src="http://www.flextheworld.com/wp-content/uploads/2009/04/a.jpg" alt="a" width="492" height="189" /></p>
<ol>
<li>头像左对齐 &#8212; 因为Call Me的最小宽度是220px, 很多用户的博客中Call me都超出了插件栏，因此将头像对齐到插件栏的左边。</li>
<li>去掉顶部呼叫提示的边框 &#8212; 边框因为是对话框的样式，只适合于Call Me的默认头像，在方形头像时会很不协调，因此去掉。</li>
<li>所有提示框中去掉 “博主” 字样, 将昵称显示在提示信息中 &#8212; 博主太局限于博客使用，一些用户希望把Call me用于自己的网站或当作客服使用时会很别扭，在现在没有时间做专业的客服版时，这样的修改让Call Me的适用度更大。</li>
</ol>
<p>Bug fix:</p>
<ol>
<li>修复了在头像设置错误时无法重新进入设置的问题。</li>
<li>一个错字。</li>
</ol>
<p>小提示:</p>
<ul>
<li>修改插件代码中的nameColor可以改变提示字体的颜色。</li>
<li>插件代码中设置wmode=&#8221;true&#8221;可以让背景透明。</li>
</ul>
<p><a href="http://www.flextheworld.com/callme-blog-video-chat-plugin" target="_blank">点击获取你的Call Me</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flextheworld.com/2009/04/call-me-ui-update.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Call me 更新 &#8212; 简化功能,优化通话效果</title>
		<link>http://www.flextheworld.com/2009/03/call-me-update-simple.html</link>
		<comments>http://www.flextheworld.com/2009/03/call-me-update-simple.html#comments</comments>
		<pubDate>Sat, 14 Mar 2009 10:56:41 +0000</pubDate>
		<dc:creator>Kevin Luo</dc:creator>
				<category><![CDATA[Call Me]]></category>
		<category><![CDATA[P2P]]></category>
		<category><![CDATA[Call Me 帮助与技巧]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Plug in]]></category>
		<category><![CDATA[Stratus]]></category>
		<category><![CDATA[博客视频聊天]]></category>
		<category><![CDATA[网络电话]]></category>

		<guid isPermaLink="false">http://www.flextheworld.com/?p=447</guid>
		<description><![CDATA[经过半个月的考虑以及与部分用户的讨论，基于博客插件应该使用方便，作用专一的原则，考虑了Call Me的作用及优势是用户可以直接点击博主头像开始视频聊天, 决定对Call Me的功能进行简化。希望大家更喜欢简化后的Call Me，它将与你的博客更好的融合，提供更好的通话效果

点击这里获取你的Call Me博客视频聊天插件
简化前后的界面对比：
简化前

简化后

]]></description>
			<content:encoded><![CDATA[<p>经过半个月的考虑以及与部分用户的讨论，基于博客插件应该使用方便，作用专一的原则，考虑了Call Me的作用及优势是用户可以直接点击博主头像开始视频聊天, 决定对Call Me的功能进行简化。希望大家更喜欢简化后的Call Me，它将与你的博客更好的融合，提供更好的通话效果</p>
<p><img class="alignnone size-full wp-image-465" title="e59bbee78987-4" src="http://www.flextheworld.com/wp-content/uploads/2009/03/e59bbee78987-4.jpg" alt="e59bbee78987-4" width="166" height="178" /><a href="http://www.flextheworld.com/callme-blog-video-chat-plugin" target="_blank"><br />
点击这里获取你的Call Me博客视频聊天插件</a></p>
<p>简化前后的界面对比：<span id="more-447"></span></p>
<h3>简化前</h3>
<p><img class="alignnone size-full wp-image-448" title="old1" src="http://www.flextheworld.com/wp-content/uploads/2009/03/old1.jpg" alt="old1" width="200" height="300" /><img class="alignnone size-full wp-image-453" title="oldb" src="http://www.flextheworld.com/wp-content/uploads/2009/03/oldb.jpg" alt="oldb" width="200" height="300" /></p>
<h3>简化后</h3>
<h3><img class="alignnone size-full wp-image-449" title="e59bbee78987-6-1" src="http://www.flextheworld.com/wp-content/uploads/2009/03/e59bbee78987-6-1.jpg" alt="e59bbee78987-6-1" width="209" height="250" /><img class="alignnone size-full wp-image-451" title="e59bbee78987-14-2" src="http://www.flextheworld.com/wp-content/uploads/2009/03/e59bbee78987-14-2.jpg" alt="e59bbee78987-14-2" width="220" height="250" /><img class="alignnone size-full wp-image-454" title="e59bbee78987-11" src="http://www.flextheworld.com/wp-content/uploads/2009/03/e59bbee78987-11.jpg" alt="e59bbee78987-11" width="220" height="250" /></h3>
]]></content:encoded>
			<wfw:commentRss>http://www.flextheworld.com/2009/03/call-me-update-simple.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Call Me 更新 &#8212; 允许博客间互相通讯</title>
		<link>http://www.flextheworld.com/2009/03/call-me-update-communicat.html</link>
		<comments>http://www.flextheworld.com/2009/03/call-me-update-communicat.html#comments</comments>
		<pubDate>Sun, 01 Mar 2009 16:37:16 +0000</pubDate>
		<dc:creator>Kevin Luo</dc:creator>
				<category><![CDATA[Call Me]]></category>
		<category><![CDATA[Call Me 帮助与技巧]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[P2P]]></category>
		<category><![CDATA[Plug in]]></category>
		<category><![CDATA[Stratus]]></category>
		<category><![CDATA[博客视频聊天]]></category>
		<category><![CDATA[网络电话]]></category>

		<guid isPermaLink="false">http://www.flextheworld.com/?p=410</guid>
		<description><![CDATA[今天为Call Me加入了一项功能,允许博客间互相通讯, 比如博客A和B都装有Call Me, A博客就可以在自己的博客里通过拨号的方式呼叫博客B。
装有Call Me的博客不需要任何手动升级操作，从现在开始刷新页面就会自动更新, 登录后第二个“电话”图标就可以使用了。
下周计划更新好友功能。



]]></description>
			<content:encoded><![CDATA[<p>今天为Call Me加入了一项功能,允许博客间互相通讯, 比如博客A和B都装有Call Me, A博客就可以在自己的博客里通过拨号的方式呼叫博客B。</p>
<p>装有Call Me的博客不需要任何手动升级操作，从现在开始刷新页面就会自动更新, 登录后第二个“电话”图标就可以使用了。</p>
<p>下周计划更新好友功能。</p>
<p><img class="alignnone size-full wp-image-411" title="e59bbee78987-2-1" src="http://www.flextheworld.com/wp-content/uploads/2009/03/e59bbee78987-2-1.jpg" alt="e59bbee78987-2-1" width="222" height="275" /></p>
<p><img class="alignnone size-full wp-image-412" title="1" src="http://www.flextheworld.com/wp-content/uploads/2009/03/1.jpg" alt="1" width="500" height="310" /></p>
<p><img class="alignnone size-full wp-image-414" title="21" src="http://www.flextheworld.com/wp-content/uploads/2009/03/21.jpg" alt="21" width="500" height="317" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flextheworld.com/2009/03/call-me-update-communicat.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Call Me 各博客安装教程索引</title>
		<link>http://www.flextheworld.com/2009/02/call-me-blog-install.html</link>
		<comments>http://www.flextheworld.com/2009/02/call-me-blog-install.html#comments</comments>
		<pubDate>Sun, 22 Feb 2009 15:01:15 +0000</pubDate>
		<dc:creator>Kevin Luo</dc:creator>
				<category><![CDATA[Call Me]]></category>
		<category><![CDATA[P2P]]></category>
		<category><![CDATA[Call Me 帮助与技巧]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Stratus]]></category>
		<category><![CDATA[博客视频聊天]]></category>
		<category><![CDATA[网络电话]]></category>

		<guid isPermaLink="false">http://www.flextheworld.com/?p=366</guid>
		<description><![CDATA[
博客视频通讯插件 &#8212; Call Me Wordpress 安装教程
博客视频通讯插件 &#8212; Call Me Blogger 安装教程
博客视频通讯插件 &#8212; Call Me 博客大巴 安装教程
博客视频通讯插件 &#8212; Call Me MySpace 安装教程
博客视频通讯插件 &#8212; Call Me 新浪博客 安装教程

]]></description>
			<content:encoded><![CDATA[<ol>
<li><a href="http://www.flextheworld.com/callme-blog-video-chat-plugin/call-me-wordpress-install" target="_blank">博客视频通讯插件 &#8212; Call Me Wordpress 安装教程</a></li>
<li><a href="http://www.flextheworld.com/callme-blog-video-chat-plugin/call-me-blogger-install" target="_blank">博客视频通讯插件 &#8212; Call Me Blogger 安装教程</a></li>
<li><a href="http://www.flextheworld.com/callme-blog-video-chat-plugin/call-me-blogbus-install" target="_blank">博客视频通讯插件 &#8212; Call Me 博客大巴 安装教程</a></li>
<li><a href="http://www.flextheworld.com/callme-blog-video-chat-plugin/call-me-myspace-install" target="_blank">博客视频通讯插件 &#8212; Call Me MySpace 安装教程</a></li>
<li><a href="http://www.flextheworld.com/callme-blog-video-chat-plugin/call-me-sinablog-install" target="_blank">博客视频通讯插件 &#8212; Call Me 新浪博客 安装教程</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.flextheworld.com/2009/02/call-me-blog-install.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
