我知道这已经被触及了很多,但是,尽管如此,我还是不明白。如果你们能忍受我:(
所以,我有这个代码:
import flash.net.*;
import fl.controls.*;
import flash.events.MouseEvent;
import flash.events.DataEvent;
import flash.events.SecurityErrorEvent;
var mySocket = new XMLSocket();
trace(Security.sandboxType)
pushMsg.addEventListener(MouseEvent.CLICK, realsedButton);
//mySocket.connect("192.124.5.2",9999);
mySocket.addEventListener(Event.CONNECT, xmlsocket);
mySocket.addEventListener(Event.CLOSE, xmlsocket);
mySocket.addEventListener(IOErrorEvent.IO_ERROR, xmlsocket);
mySocket.addEventListener(DataEvent.DATA, dataHandler);
mySocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityHandler);
msgArea.htmlText = "Started!";
connectToServer();
function connectToServer()
{
msgArea.htmlText += "Inside connect To Server";
mySocket.connect("localhost",9999);
}
function securityHandler(evt: SecurityErrorEvent)
{
msgArea.htmlText += "SecurityError";
}
function dataHandler(evt:DataEvent)
{
trace("Inside dataHandler")
var xml = XML(evt.target.data);
msgArea.htmlText += xml;
}
function xmlsocket(Event)
{
msgArea.htmlText += "inside xmlSocket";
switch(Event.type)
{
case 'ioError':
msgArea.htmlText += "Inside dataHandler";
msgArea.htmlText += "<b>Server connection failed!</b>";
break;
case 'connect':
msgArea.htmlText +="Inside Connect";
msgArea.htmlText += "<b>Server connection establed!</b>";
break;
case 'close':
msgArea.htmlText +="Inside Close";
msgArea.htmlText += "<b>Server connection lost</b>";
break;
}
}
function msgGO()
{
msgArea.htmlText +="Inside msgGO";
if (inputMsg.htmlText != "")
{
msgArea.htmlText +="Inside msgGo2";
mySocket.send(inputMsg.htmlText+"\n");
inputMsg.htmlText = "";
}
}
function realsedButton(evt:MouseEvent)
{
msgArea.htmlText +="Inside ReleasedButton";
msgGO();
}
我已经做了很多测试,我会尝试整齐地总结一下。
如果直接从 Flash 运行(ctrl+enter) 并且套接字服务器处于离线状态并且权限设置为网络并且 mySocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityHandler) 行被注释掉
输出如下:
- 开始了!
- 内部连接到服务器
- 在xmlsocket里面
- 内部数据处理程序
- 服务器连接失败
错误 #2044 未处理的安全 error.txt = 错误 #2048 安全沙箱违规文件 ///G|/flash%20Stuff/socketClientNetwork.swf 无法在 socketClientNetwork_fla::maintimeline/frame 1 处从 localhost:9999 加载数据{}
如果从 SWF 运行并且套接字服务器处于 OFFLINE 状态并且权限设置为 Network并且该行(从上面)没有被注释掉 输出如下:
开始了!
内部连接到服务器
安全错误
如果直接从Flash运行(ctrl+enter) 并且套接字服务器处于离线状态并且权限设置为本地并且 mySocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityHandler) 行被注释掉
输出如下:
- 开始了!
- 内部连接到服务器
- 在xmlsocket里面
- 内部数据处理程序
- 服务器连接失败
错误 #2044 未处理的安全 error.txt = 错误 #2048 安全沙箱违规文件 ///G|/flash%20Stuff/socketClientLocal.swf 无法在 socketClientLocal_fla::maintimeline/frame 1 处从 localhost:9999 加载数据{}
如果从SWF和套接字服务器运行并且套接字服务器处于离线状态并且权限设置为本地并且该行(如上)未注释
- 开始了!
- 内部连接到服务器
- 安全错误
SWF :: 在线 :: 本地 :: 已评论
- 开始了!
- 内部连接到服务器
- 安全错误
FLA :: 在线 :: 本地 :: 未注释
- 开始了!
- 内部连接到服务器
- 在xmlsocket里面
- 内部连接到服务器
- 连接已建立
SWF::Online::Network::Commented
- 开始了!
- 内部连接到服务器
- 安全错误
FLA::Online::Network::未注释
- 开始了!
- 内部连接到服务器
- 内部xml套接字
- 内部连接
- 服务器连接建立