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 安全沙箱问题解决

时间: 2024-10-24 07:31:09

Flex Socket 安全沙箱问题解决的相关文章

Flex Socket与Java通信实例说明(转)

Flex Socket与Java通信实例说明(转) 这两天一直在flex的Socket ,现在终于懂了很多.由浅到深一步一步深入.慢慢体会实例,虽然实例都是在网上找的,但也经过了我的测试.我比较喜欢注释,也注释了很多. 跟着走你就会懂.. Flex端 和 Java端, 先运行Java端启动服务.然后在测试Flex. 实例一: Flex端: <?xml version="1.0" encoding="utf-8"?> <mx:TitleWindow

linux 网络编程 socket bind failed 问题解决

今天写一个简单的socket网络通讯的程序的时候,用ctrl+c结束服务器端程序之后,再次启动服务器出现了bind failed:the address already in use的错误.在网上查了一下以后找到了原因,在此记录一下.这个IBM的官网上说到了这一点:http://www.ibm.com/developerworks/cn/linux/l-sockpit/.详细介绍如下: bind 普遍遭遇的问题是试图绑定一个已经在使用的端口.该陷阱是也许没有活动的套接字存在,但仍然禁止绑定端口(

flex socket policy

@flex的as3代码是具备使用origin tcp socket通信能力的. @如果是flex builder本机调试,那么可以直连tcp的server. @如果flex发布在webserver上,那么使用flex连接tcp server后,会自动发送给server一个policy请求.严格来说是两个,一个发往connect的端口,一个发网843端口,内容如下 <policy-file-request/> @我的server是在ubuntu下,发现必须root才能bind843端口,所以以下

oracle数据库登录连接很慢;kettle连接oracle 报 IO 错误,socket time out 问题解决记录

问题描述: 1:oracle数据库连接登陆时突然变得很慢:sqldeveloper链接数据库很慢: 2:Kettle-spoon etl程序访问数据库,任务执行时报 :数据库连接 IO错误 :Socket Time Out 错误. 解决: 1:lsnrctl status 用命令查看oracle监听状态:命令执行后,过许久才显示结果(正常很快显示): 2:分析是不是监听日志太大了.从上命令的呈现结果中找到日志路径: Listener Parameter File   /u01/app/oracl

(转)flash的Socket通讯沙箱和安全策略问题

一.沙箱和安全策略问题 1.此问题发生在连接时,准确地说是连接前,分别两种情况: 1.本地播放 本地播放时,默认情况下Flash Player将不允许swf访问任何网络. 访问http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html,将swf加入到许可列表,即可解除限制. 2.WEB发布 发布在WEB上的swf, 将可能面临跨域的问题. 2.Flash中的通信方式有两种:

浅谈Flash Socket通信安全沙箱

用过Flash socket的同学都知道.Flash socket通讯有安全沙箱问题.就是在Flash Player发起socket通信时.会向服务端获取安全策略,假设得不到服务端响应,flash将无法连接到服务端. 首先.什么是Flash安全沙箱? Flash安全沙箱是Flash Socket的一种安全策略.为避免随意Flash终端与目标主机建立Socket通讯,以授权port,域名方式限定连接. 那么.Flash Player怎么获取Socket策略? Flash Player发起socke

[转]浅谈Flash Socket通信安全沙箱

用过Flash socket的同学都知道,Flash socket通讯有安全沙箱问题.就是在Flash Player发起socket通信时,会向服务端获取安全策略,如果得不到服务端响应,flash将无法连接到服务端. 首先,什么是Flash安全沙箱? Flash安全沙箱是Flash Socket的一种安全策略,为避免任意Flash终端与目标主机建立Socket通讯,以授权端口,域名方式限定连接. 那么,Flash Player怎么获取Socket策略? Flash Player发起socket通

flex 手机平板兼容问题解决

/* ============================================================ flex:定义布局为盒模型 flex-v:盒模型垂直布局 flex-1:子元素占据剩余的空间 flex-align-center:子元素垂直居中 flex-pack-center:子元素水平居中 flex-pack-justify:子元素两端对齐 兼容性:ios 4+.android 2.3+.winphone8+ ===========================

flex下省略号的问题解决

最近在搞微信小程序,发现flex下使用省略号是没有效果的,而且还会打乱预期的结构,查询statckoverflow知道需要在父级设置min-width:0; 但是在我的尝试下,依然不行,原来在上层父级就是flex那一级别也需要设置 min-width:0; 就是可以理解为 省略号标签的flex-item以及所在的flex父级 都需要设置min-width:0; 预览地址:https://jsbin.com/vimipezogi/edit?html,css,output CSS: .flex {