惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Cloudflare Blog
U
Unit 42
D
Docker
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
Recent Announcements
Recent Announcements
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI
V
Visual Studio Blog
I
InfoQ
Google DeepMind News
Google DeepMind News
小众软件
小众软件
L
LangChain Blog
C
Check Point Blog
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
J
Java Code Geeks
罗磊的独立博客

博客园 - 斌哥

ORACLE 10g下载地址 ORACLE 10g 64位下载地址 使用poi读写excel文件 安装oracle,创建并启动oracle实例(创建克隆数据库,进度条在45%)就进行不下去了 利用Oracle分析函数实现多行数据合并为一行 fastreport 3的安装步骤 修改windows server 2008 时间和日期格式 IIS配置后显示错误 SQL server2000数据库备份和还原语句 SQL Server 2008 下载地址(微软官方网站) 福州 Flex 瑞研QQ群:138571223 RIADEV-福州 please verify the preference field with the prompt:Tomcat JDK name flex论坛 使用SQL Server 2008提供的表分区向导 Flex打印 Microsoft Visual Studio 2010 旗舰版下载地址 下载最新Silverlight 5 Beta客户端 oracle数据库导入导出命令! 用C#创建Windows服务(Windows Services) Microsoft Silverlight 4 Tools for Visual Studio 2010 下载地址
Socket通信:服务端发送安全策略到flash(c#)
斌哥 · 2011-01-28 · via 博客园 - 斌哥

 

转载

在Adobe Flash Player升级到9.0.124后,由于安全策略的更改,使得在socket或xmlsocket的应用里,原先如用http方式加载安全策略的手段不能继续使用了,类似此类应用必须使用xmlsocket://方式来提供安全策略。flashplayer的安全策略检测过程如下:

1,首先检测目标服务器的843端口是否提供安全策略

2,如果1没有检测到策略,则检测actionscript是否使用了

Security.loadPolicyFile(xmlsocket://)

手段提供安全策略,如果还没检测到,则使用第3步检测

3,检测目标服务器目标端口是否提供安全策略

C#代码如下,编译环境VS2008 + .NET framework 3.5

using System; 

using System.Text; 

using System.Net; 
using System.Net.Sockets; 
using System.Threading; 
using System.Collections; 
  
namespace serverSocket 

    class Program 
    { 
        private Thread Beginthread, receivethread; 
        private Socket serverSocket, ClientSocket; 
  
        static void Main(string[] args) 
        { 
            Program program = new Program(); 
  
            IPEndPoint remotePoint = new IPEndPoint(IPAddress.Any, 843); 
  
            program.serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
  
            program.serverSocket.Bind(remotePoint); 
            program.serverSocket.Listen(10); 
  
            Console.WriteLine("Listening..."); 
            program.Beginthread = new Thread(new ThreadStart(program.BeginListen)); 
            program.Beginthread.Start(); 
        } 
  
        private void BeginListen() 
        { 
            while (true) 
            { 
                ClientSocket = serverSocket.Accept(); 
                receivethread = new Thread(new ThreadStart(receive)); 
                receivethread.Start(); 
            } 
        } 
  
        private void receive() 
        { 
            IPEndPoint clienTep = (IPEndPoint)ClientSocket.RemoteEndPoint; 
  
            int bytes = 0; 
  
            while (true) 
            { 
                Byte[] buffer = new Byte[24]; 
                bytes = ClientSocket.Receive(buffer); 
  
                if (bytes > 0) 
                { 
                    string clientCommand = Encoding.UTF8.GetString(buffer, 0, bytes); 
  
                    String policy = "<cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"2999\" /></cross-domain-policy>\0"; 
  
                    buffer = System.Text.Encoding.UTF8.GetBytes(policy.ToCharArray()); 
  
                    ClientSocket.Send(buffer, buffer.Length, 0); 
                } 
                else 
                { 
                    break; 
                } 
            } 
  
            ClientSocket.Close(); 
            receivethread.Abort(); 
        } 
    } 
}

端口可以修改为843,或者是你指定连接的任意端口。