これは多くの人に触れられていることを私は知っています、しかし、それにもかかわらず、私はそれを理解していません。あなたたちが私に耐えることができれば:(
だから、私はこのコードを持っています:
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の内部
- dataHandlerの内部
- サーバー接続に失敗しました
エラー#2044未処理のセキュリティerror.txt =エラー#2048セキュリティサンドボックス違反ファイル/// G | /flash%20Stuff/socketClientNetwork.swfは、socketClientNetwork_fla :: maintimeline / frame 1 {}のlocalhost:9999からデータを読み込めません。
SWFから実行し、ソケットサーバーがオフラインで、アクセス許可がネットワークに設定されていて、(上からの)回線がコメントアウトされていない 場合出力は次のとおりです。
始めました!
サーバーへの接続の内部
セキュリティエラー
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::コメント
- 始めました!
- サーバーへの接続の内部
- セキュリティエラー
FLA :: Online :: Network ::Uncommented
- 始めました!
- 内部はサーバーに接続します
- xmlソケット内
- 内部接続
- サーバー接続が確立されました