用php的socket跟flash的socket通信
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-22
; // 253 - DO (option code) 21. private const DONT:int = 0xFE; // 254 - DON''T (option code) 22. private const IAC:int = 0xFF; // 255 - Interpret as Command (IAC) 23. 24. private var serverURL:String; 25. private var portNumber:int; 26. private var socket:Socket; 27. private var ta:TextArea; 28. private var state:int = 0; 29. System.useCodePage = false; 30. public function CustomSocket(server:String, port:int, output:TextArea) 31. { 32. serverURL = server; 33. portNumber = port; 34. ta = output; 35. socket = new Socket(); 36. socket.addEventListener(Event.CONNECT, connectHandler); 37. socket.addEventListener(Event.CLOSE, closeHandler); 38. socket.addEventListener(ErrorEvent.ERROR, errorHandler); 39. socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 40. socket.addEventListener(ProgressEvent.SOCKET_DATA, dataHandler); 41. 42. // Security.loadPolicyFile("xmlsocket://" + serverURL + ":"+portNumber); 43. 44. try 45. { 46. msg("Trying to connect to" + serverURL + ":" + portNumber + "\n"); 47. socket.connect(serverURL,portNumber); 48. } 49. catch (error:Error) 50. { 51. msg(error.message + "\n"); 52. // socket.close(); 53. } 54. } 55. public function ioErrorHandler(event:IOErrorEvent):void 56. { 57. msg("Unable to connect: socket error.\n"); 58. } 59. public function writeBytesToSocket():void { 60. socket.writeUTFBytes("sssssssssssssssssssss"); 61. socket.flush(); 62. } 63. private function connectHandler(event:Event):void { 64. if (socket.connected) { 65. msg("connected...\n"); 66. 67. } else { 68. msg("unable to connect\n"); 69. } 70. } 71. private function closeHandler(event:Event):void 72. { 73. msg("closed...\n"); 74. } 75. private function errorHandler(event:ErrorEvent):void { 76. msg(event.text + "\n"); 77. } 78. private function dataHandler(event:ProgressEvent):void { 79. while ( socket.bytesAvailable ) { 80. // Read a byte from the socket and display it 81. var data = socket.readUTFBytes(socket.bytesAvailable); 82. ta.text+=data; 83. } 84. } 85. private function msg(value:String):void { 86. ta.text += value; 87. ta.dispatchEvent(new Event(Event.CHANGE)); 88. setTimeout(setScroll, 100); 89. } 90. public function setScroll():void { 91. ta.verticalScrollPosition = ta.maxVerticalScrollPosition; 92. } 93. public function closeSocket():void{ 94. socket.close(); 95. } 96. public function sendM(e:String):void 97. { 98. socket.writeUTFBytes(e); 99. socket.flush(); 100. } 101. } 102. 103. } (3).安全策略 基本内容见此文章:http://wangleifire.javaeye.com/blog/335034 flash的安全策略是很严格的,特别是在flash 10中,当使用socket的时候必须存在策略文件才能继续传输数据,这个文件以前可以直接存放在根目录即可,而现在要求必须 在socket中直接传输才行,默认情况下flash会在服务器的843端口寻找这个策略文件的传输socket,可是php中开多个端口传输很有问题,不能实现多线程是主要问题,所以 这个方法不太好,也不太直接,其实还有一个非常直接的 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于用php的socket跟flash的socket通信的所有评论