关于actionscript3.0通过socket于服务器通讯获取数据的问题
actionscript吧
全部回复
仅看楼主
level 2
布倪斯 楼主
我希望实现的是 根据需要 以调用方法获取返回值的方式 从服务器获取数据实现类似于java中的 如下代码 Socket socket = null; InputStream inputStream = null; BufferedReader br = null; try { socket = this.serverSocket.accept(); inputStream = socket.getInputStream(); br = new BufferedReader(new InputStreamReader(inputStream)); mess = br.readLine(); System.out.println(mess); } catch (Exception e) { e.printStackTrace(); } finally { try { br.close(); inputStream.close(); socket.close(); } catch (Exception e) { e.printStackTrace(); } } 可是在as中 socket通讯的数据需要通过事件获取所以在一个方法中 没办法事实获取到得到的数据 as中代码如下 public static function downloadData():String { var str:String = ""; insocket = new Socket(); insocket.addEventListener(ProgressEvent.SOCKET_DATA,function(event:Event):void{ if(insocket.bytesAvailable){ str = insocket.readUTFBytes(insocket.bytesAvailable); } insocket.close(); }); insocket.connect(HOST,PATH); return str; } 这个方法中在匿名方法里 通过trace方法可以正确输出我要的数据而这个通过事件调用的方法运行是在return之后请问有什么办法可以实时获取服务器信息 最好是在一次run里完成我是java程序员 flash今天才接触 好多地方还不太了解希望有懂的老师帮忙看看 多谢
2012年12月26日 16点12分 1
level 2
布倪斯 楼主
我晕怎么成乱码了
2012年12月26日 16点12分 2
level 2
布倪斯 楼主
我希望实现的是 根据需要 以调用方法获取返回值的方式 从服务器获取数据 可是在as中 socket通讯的数据需要通过事件获取所以在一个方法中 没办法事实获取到得到的数据 as中的那个匿名方法里 通过trace方法可以正确输出我要的数据而这个通过事件调用的方法运行是在return之后请问有什么办法可以实时获取服务器信息 最好是在一次run里完成我是java程序员 flash今天才接触 好多地方还不太了解希望有懂的老师帮忙看看 多谢
2012年12月26日 16点12分 4
level 9
首先,从服务器获取数据,这必然是一个异步过程。不可能你刚新建了一个Socket马上就能拿到数据。
所以downloadData()这个静态方法不用返回任何值,就算你非要返回一个值,那也只能返回一个Socket类的实例,考虑这是静态方法,最好采用单例模式设计。
在监听器响应事件的过程中,event.target其实就是Socket类的实例:insocket的引用。所以你获取了事件,自然就能拿到你下载的数据。
2012年12月29日 05点12分 5
level 6
while(socket.bytesAvailable)
{}用一个while循环
2013年01月05日 01点01分 6
1