注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

Silverlight开发之八SOCKET通信  

2013-07-31 20:41:50|  分类: NET(C#) |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Silverlight开发之八SOCKET通信

C#的通信过程中,SOCKET算是一种比较复杂的方法,原来在NET2.0中写过一个并发量在一千多个的程序,但是在新NET3.5中提供了更好的方法,就不用再生成一些临时变量,提高了效率和内存的管理程度(更详细的将在后续进行总结)。

SL中,与这些又有不同,因为SL属于一种富客户端的程序,其对后台的通信必然也受到一些限制,查了一些资料,发现确实也是与一般的SOCKET通信有所不同。其中最明显的是在SOCKET通信前要进行一次策略的传送,至于为什么现在还真得不知道,以后有时间慢慢进行深入学习再总结。

Silverlight客户端自动向943端口的服务器端发送一个“<policy-file-request/>”的语句请求,然后服务器端向(——>)客户端发送策略文件:

clientaccesspolicy.xml,例如:

复制代码

<?xml version="1.0" encoding="utf-8" ?>

<access-policy>

  <cross-domain-access>

    <policy>

      <allow-from>

        <domain uri="*"/>

      </allow-from>

      <grant-to>

        <socket-resource port="4502-4534" protocol="tcp"/>

      </grant-to>

    </policy>

  </cross-domain-access>

</access-policy>

 

正如上面所讲,客户端的策略请求是自动发送的,策略文件的接收和分析也是自动的,是Silverlight自发工作的,不需要程序员手工写代码进行发送接收和分析。

但是,服务器端接收策略请求需要手工完成,程序员必须创建一个Socket监听943端口(该端口是固定的,客户端策略请求固定发送到该端口),然后分析请求过来的数据是否是策略请求,如果是的,那么就读取策略文件,再将该策略文件发送到客户端就可以了。

另外一个限制,Silverlight Socket 数据交换端口必须在4502-4534范围,也就是说,整个Socket将用到两个端口,一个是943用于策略请求,另一个是4502-4534范围的你指定的数据交换端口。

这其实也相当于一次握手吧,查看资料说好像是为了防止HTTP协议中的跨域通信中乱来,不过通过上面的过程,客户端和服务端就建立起来了连接,双方就可以通信了,具体的通信过程就和一般的SOCKET通信没有什么差异了。

凡事预则立,不预而废。每天要学习一些,思考一些,总结一些。

  评论这张
 
阅读(520)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017