我想获得一个相当简单的flash游戏来使用php套接字。到目前为止,我正在使用允许用户与海誓山盟聊天的套接字进行测试。这将在我的个人计算机上运行,只能从IDE中运行。如果我尝试运行SWF或.html,请不要去。我知道人们在使用PhP vs C#vs C++ vs HTML等方面处于边界,但我真的想坚持使用php,因为我使用的托管将支持这一点,并且最终我将有足够的经验去深入研究socket服务器。PHP5套接字服务器闪存
所以我的问题是,我有它的工作主要是。如果我在Flash CS5中进行测试(Ctrl + Enter),它将运行痕迹和一切,并在无法连接时停止,这是我的预期。但是,当我从SWF或HTML运行它时,它甚至不会初始化。下面的代码将会使这个多一点明确
import flash.net.*;
import fl.controls.*;
import flash.events.MouseEvent;
import flash.events.DataEvent;
import flash.events.SecurityErrorEvent;
var mySocket = new XMLSocket();
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();
}
所以,当我运行这个从IDE它输出: 内部连接到服务器 内的XMLSocket 里面的DataHandler 服务器连接失败!
哪个好,除了跳过开始! (不确定为什么)
当我运行这个从SWF或HTML 内部连接到服务器
这就是所发生的一切。我在消息中添加了跟踪代码跳转时的确切位置。在我的发布设置中,我将它设置为使用网络文件,我也尝试了使用本地文件。
使用网络文件,SWF文件将输出 内部连接到服务器
使用本地文件,也不会输出任何东西。
如果有人能解释这个或帮助我,我将不胜感激。
好的,所以我们取得了一些小的进展。它现在将在机器上运行,给我们启动!内连接到服务器,然后安全错误约10-15秒后弹出。
我们在9999上运行这个,但我听说有关于端口843和安全错误的任何琐事,任何方式来调试此错误?我们只有在尝试使用PhP套接字从实际服务器运行它时才会得到它。
如果我在我的个人电脑上运行swf,我仍然不会通过开始!和内部连接到服务器无论等待多长时间
跳过“Started!”的原因是因为在'msgArea.htmlText =“内部连接到服务器”;',你使用'='而不是'+ ='。 – icktoofay
呵呵呵呵,谢谢你的收获! :) –
你是在两台机器之间测试还是在相同的? – ethrbunny