我用flash做了个简单的聊天程序,由JAVA在Eclipse中完成服务器的功能,在flash中建立Socket连接实现和服务器之间的通信,我在flash中的建立了Socket对象,并添加了事件监听:var socket:Socket;
socket=new Socket(ip,port);
socket.addEventListener(Event.CONNECT,connectHandler);      //连接上
socket.addEventListener(Event.CLOSE,closeHandler);          //关闭时调用此函数另外我还为一个断开“连接”按钮和“断开”按钮添加了事件监听:bt_connect.addEventListener(MouseEvent.MOUSE_UP,connectSocket);   //单击连接按钮
bt_close.addEventListener(MouseEvent.MOUSE_UP,closeSocket);       //断开连接以上函数分别是:function closeSocket(e:Event):void{
if (socket.connected==true)
socket.close();                  //如果是脸上的,则断开
showInfo("按钮关闭 ");           //我的问题所在:就是这里断开之后closeHandler函数应该要响应CLOSE事件
      //但是他却没有响应
}//与服务器断开之后的处理函数
function closeHandler(e:Event):void{
var str:String="已经和服务器断开";
trace("真没有响应啊"+str);
bt_connect.enabled=true;
bt_send.enabled=false;
bt_close.enabled=false;           //同上
trace(bt_close.enabled);
showInfo(str);
}function connectHandler(e:Event):void{
clearInfo();
var str:String="已经接入服务器\n";
connected=true;
bt_connect.enabled=false;              //连上之后不能在连接了
bt_close.enabled=true;
bt_send.enabled=true;                  //连接上之后发送和断开都可用了
showInfo(str);
}问题是这样的:当我点击“连接”时,能够正确连接上服务器,会触发连接上就事件:Event.CONNECT,从而调用函数
connectHandler,这里能够正确执行,但是当我点击“断开”时,执行了socket.close()语句,此时应该会触发Event.CLOSE
事件而调用closeHandler函数,但是程序始终不执行,我在JAVA服务器中也断开了Socket连接可是还是不能触发Event.CLOSE事件。高手支招啊,我们写代码的就是这样,一个小问题有时候也很让人纠结。