积极答复者
求助,基于P2P网页播放器

问题
-
目前我通过WCF的框架开发一个在线的WEB P2P播放器,其功能已基本实现,但在P2P处理却存在问题。例如当一个节点A请求一个文件块时它会向邻居节点发出请求,为了减少网络资源我将HOTCOUNT=1 ,然后其中一邻节点C接收消息并通过回调调用CALLBACK将该文件块(设为50K)发送给A ,奇怪的是这时不但A接收到了,其它的B,D节点都接收到了这个消息。这样就造成每个节点网络资源占用高。 按道理通过回调只响应A的CALLBACK方法才对,是PEER不支持回调,还是我的方法错了。
另我采用的是自定义对等解释(CustomPeerResolverService),
合同定义:[OperationContract(IsOneWay = true,IsInitiating=true)]
void SendFileBuffer(NewvP2PResponse response);//接收到A的消息,通过程序判断如果本身有A要的数据,则采用回调方式将数据发出 response包括相应的数据流 大小有50K
OperationContext.Current.GetCallbackChannel<INewvP2PChanel>().SendFileBuffer(response);
在执行上面的方式后A虽然接收到了,但同时所有其它节点也接收到了。其原理跟不采用回调方式需直接执行SendFileBuffer一样将消息转发给各个邻节点。
虽然其它节点可以判断是否接收,但数据包已通过网络发送过来了。
通过资料发现NetPeerBinding好像不支持回调操作,但程序却可以运行,只不过不是真正意义上的回调。难道本质就是如此吗,哪还有什么意义呢,哪就不能是点对点,而是UDP了。
各位大侠,出来帮帮我呀。
- 已编辑 zingerwu 2010年7月2日 7:39 update