以前提到Flex建立Socket的时候要收发一套安全内容,当时是根据安全内容,用Python模拟Flex,与Java通信。
现在禹同学提供了一个Flex的代码,记录一下。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Script> <![CDATA[ import mx.controls.Alert; import flash.net.Socket; private var socket:XMLSocket = new XMLSocket(); internal function init():void{ socket.addEventListener(Event.CLOSE,closehandler); socket.addEventListener(Event.CONNECT,connectHandle); socket.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandle); socket.addEventListener(DataEvent.DATA,dataHandle); socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityHandle); } internal function closehandler(evt:Event):void{ Alert.show("连接关闭"); // trace("连接关闭"); } internal function connectHandle(evt:Event):void{ Alert.show("连接建立"); // trace("连接建立"); } internal function ioErrorHandle(evt:IOErrorEvent):void{ // trace("io异常"); } internal function securityHandle(evt:SecurityErrorEvent):void{ // trace("安全异常"); } internal function dataHandle(evt:DataEvent):void{ var response:XML = new XML(evt.data); // trace(response.toXMLString()); text1.text = response.toXMLString(); // while(socket.bytesAvailable){ // msg += socket.readUTFBytes(socket.bytesAvailable); // trace(msg); // } // var arr:Array = msg.split('\n'); // for(var i:int = 0 ; i <arr.length;i++){ // if(arr[i].lenght>1){ // var myPattern:RegExp = /\r/; // arr[i] = arr[i].replace(myPattern,""); // trace(arr[i]); // Alert.show(arr[i]); // } // } } internal function dosocket():void{ socket.connect( "127.0.0.1",9099); socket.send("<policy-file-request/>"); // socket.writeUTF("<policy-file-request/>"); } ]]> </mx:Script> <mx:Panel width="400" height="300"> <mx:Button label="connection" click="dosocket()" textAlign="center"/> <mx:Spacer/> <mx:Spacer/> <mx:Text id="text1" width="100%" height="50%"/> </mx:Panel> </mx:Application>