Flex Socket 安全沙箱问题解决
Flex使用Socket与C++通讯时遇到了安全沙箱问题,NND,折腾我半天,这是我的解决方法:
1):策略文件与主套接字在同一端口,只需调用 Socket.connect()
或 XMLSocket.connect()
方法;
2):策略文件与主套接字在不同端口,需使用特殊的“xmlsocket”
语法调用 Security.loadPolicyFile()
方法,如下所示:Security.loadPolicyFile("xmlsocket://server.com:2525");先调用 Security.loadPolicyFile()
方法,然后再调用
Socket.connect()
或 XMLSocket.connect()
方法。
服务器端代码如下:
#include <winsock2.h>
#include <windows.h>
#include <iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib") void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
short port=1800;//端口号 wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );//初始化套接字
if ( err != 0 )
{
return;
} if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
} SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);//创建套接字
SOCKET sockConn;//用来和客户端通信的套接字
SOCKADDR_IN addrSrv;//用来和客户端通信的套接字地址
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(port); bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//绑定端口
listen(sockSrv,5);//侦听 printf("Server %d is listening....../n",port); SOCKADDR_IN addrClient; int len=sizeof(SOCKADDR);
char buf[4096];//接收的数据
char rbuf[100]=
"<cross-domain-policy> "
"<allow-access-from domain=/"*/" to-ports=/"*/"/>"
"</cross-domain-policy> ";//套接字策略文件 while(1)
{
//接受连接
sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
printf("Accept connection from %s/n",inet_ntoa(addrClient.sin_addr)); recv:
//接收数据
int bytes;
if((bytes=recv(sockConn,buf,sizeof(buf),0))==SOCKET_ERROR)
{
printf("接收数据失败!/n");
exit(-1);
} buf[bytes]='/0';
printf("Message from %s: %s/n",inet_ntoa(addrClient.sin_addr),buf); if (0 == strcmp(buf,"<policy-file-request/>"))
{
//发送数据
if(send(sockConn,rbuf,strlen(rbuf)+1,0)==SOCKET_ERROR)
{
printf("发送数据失败!");
exit(-1);
}
printf("Message to %s: %s/n",inet_ntoa(addrClient.sin_addr),rbuf);
}
else
{
//Echo
if(send(sockConn,buf,strlen(buf)+1,0)==SOCKET_ERROR)
{
printf("发送数据失败!");
exit(-1);
}
printf("Message to %s: %s/n",inet_ntoa(addrClient.sin_addr),buf);
goto recv;
}
//清理套接字占用的资源
closesocket(sockConn);
}
}
Flex Socket 安全沙箱问题解决的更多相关文章
- Flex Socket与Java通信实例说明(转)
Flex Socket与Java通信实例说明(转) 这两天一直在flex的Socket ,现在终于懂了很多.由浅到深一步一步深入.慢慢体会实例,虽然实例都是在网上找的,但也经过了我的测试.我比较喜欢注 ...
- 百万年薪python之路 -- socket粘包问题解决
socket粘包问题解决 1. 高大上版解决粘包方式(自定制包头) 整体的流程解释 整个流程的大致解释: 我们可以把报头做成字典,字典里包含将要发送的真实数据的描述信息(大小啊之类的),然后json序 ...
- [ActionScript 3.0] AS3 Socket安全沙箱策略文件
当与一个主机建立一个Socket连接时,Flash Player要遵守如下安全沙箱规则: 1.Flash的.swf文件和主机必须严格的在同一个域名,只有这样才可以成功建立连接: 2.一个从网上发布的. ...
- oracle数据库登录连接很慢;kettle连接oracle 报 IO 错误,socket time out 问题解决记录
问题描述: 1:oracle数据库连接登陆时突然变得很慢:sqldeveloper链接数据库很慢: 2:Kettle-spoon etl程序访问数据库,任务执行时报 :数据库连接 IO错误 :Sock ...
- (转)flash的Socket通讯沙箱和安全策略问题
一.沙箱和安全策略问题 1.此问题发生在连接时,准确地说是连接前,分别两种情况: 1.本地播放 本地播放时,默认情况下Flash Player将不允许swf访问任何网络. 访问http://www.m ...
- socket粘包问题解决
粘包client.send(data1)client.send(data2)这两次send紧挨在一起,处理的时候会放在一起发过去在Linux里每次都粘包,Windows里面某次会出现粘包在两次send ...
- flex socket policy
@ flex的as3代码是具备使用origin tcp socket通信能力的. @ 如果是flex builder本机调试,那么可以直连tcp的server. @ 如果flex发布在webserve ...
- [转]浅谈Flash Socket通信安全沙箱
用过Flash socket的同学都知道,Flash socket通讯有安全沙箱问题.就是在Flash Player发起socket通信时,会向服务端获取安全策略,如果得不到服务端响应,flash将无 ...
- flex下省略号的问题解决
最近在搞微信小程序,发现flex下使用省略号是没有效果的,而且还会打乱预期的结构,查询statckoverflow知道需要在父级设置min-width:0; 但是在我的尝试下,依然不行,原来在上层父级 ...
随机推荐
- 定时且周期性的任务研究II--ScheduledThreadPoolExecutor
http://victorzhzh.iteye.com/blog/1011635 上一篇中我们看到了Timer的不足之处,本篇我们将围绕这些不足之处看看ScheduledThreadPoolExecu ...
- 合并BIN文件的两种方法(转)
源:http://blog.chinaunix.net/uid-20745340-id-1878803.html 合并BIN文件的两种方法 在单片机的开发过程中,经常需要将两个单独的BIN文件合并成一 ...
- CodeForces 590A Median Smoothing
构造题. 答案可以o(n)构造出来.首先要发现规律.只有01交替的串才可能变化,变化规律如下: 1开头,长度为偶数(0结尾):变(len-2)/2次 变完后 前半1 后半01开头,长度为奇数(1结尾) ...
- POJ3352 Road Construction 双连通分量+缩点
Road Construction Description It's almost summer time, and that means that it's almost summer constr ...
- PHP中对mysql预编译查询语句的一个封装
原文地址:http://chen-shan.net/?p=474 为了防止sql注入,我们都使用过mysqli这个类,但是每次都需要绑定参数,绑定结果等,比较麻烦,所以可以把这些重复的语句封装成一个函 ...
- javascript 中 function bind()
Function bind() and currying <%-- All JavaScript functions have a method called bind that binds t ...
- RSA----实际函数库选择
需求:对字符串加密 加密后不要超过这个字符串的长度,最好是1半的长度. 非对称算法. 重复度一定要低 1使用RSA加密 1 rsaeuro 2openssl 参考openssl编程 3 Cr ...
- leetcode--007 word break I
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+4AAAC5CAIAAAA55fI7AAAZa0lEQVR4nO3dPW7bQIMG4L2MT6B7+A
- Memcached源码分析之memcached.c
memcached.c 由于代码太多,在此省略了部分代码,例如UPD连接,二进制协议,某些错误输出和调试输出等,建议从main函数开始看起. #include "memcached.h&qu ...
- lua 函数
1.函数只有一个参数,且该参数为table 或 字符串时,调用函数可以省略() print"hello world" 同 print("hello world" ...