Flash的Socket与WebService功能

原创 2006年05月31日 23:00:00
最近接触了Flash。当然以我的能力肯定做不了动画的,而是把Flash当成一个受管的编程平台,去做一些小程序的开发了。
第一个问题是Socket。Flash是支持TCP Socket的,但实现起来有点别扭。首先我没有发现Flash有监听端口的能力,这也正常,如果用户打开一个带Flash的网页,就会监听一个端口,那确实有点不厚道。在flash中Socket类叫做XMLSocket,通过Connect方法实现与服务器的连接,通过Send方法向服务器发送数据,通过close方法主动结束一个连接,通过OnData事件实现接收数据,通过OnClose事件实现被动的关闭连接。例如:
s = new XMLSocket();
s.connect("localhost", 12345);
s.OnConnect = function(result) {
  trace(result);
}
s.OnData = function(data) {
{
 trace("data");
}
s.OnClose = function() {
 trace("closed");
}
...
 
s.send("haha");
 
有一个与众不同的地方,就是flash在发送数据的时候会自动在数据后面加一个'/0',也就是说接收到的内容比实际要发送的内容多一个字节,这还不是大问题,另一个问题是向flash发送数据时后面也必须跟随一个'/0',只有遇到'/0',OnData事件才会触发。因此要flash来实现一些流行的协议的客户端是很困难的,因为它们并不是以'/0'作为一条消息的结束。
 
第二个问题是flash的WebService。flash 8 Professional是支持访问WebService的。虽然它并不会像Visual Studio.Net那样生成强类型的代理类,但它在运行阶段也可以把工作作得很好。例如对于一个WebService函数:
[WebMethod]
public string HelloWorld()
{
  return "Hello World!";
}
 
在flash中要访问它,首先向页面中加入一个WebServiceConnector组件,命名为s1,并设置它的WSDL属性,例如:http://localhost/TestService/service1.asmx?wsdl
设置它的operation属性为要调用的web method的名字,如HelloWorld
然后,设置一下当取回数据时触发的事件:
var getResult = function(ev) {
  text1.text = ev.target.results;  //text1是界面上一个输入文本框
}
 
s1.addEventListener("result", getResult);
 
在需要调用WebService的地方只需要写上一句:
s1.trigger();
就可以了。
当然也有把参数、返回值与界面绑定的做法,网上有很多介绍,这里就不多说了。
另外,flash对于较复杂类型的返回参数也有较好的支持,例如,可以支持返回结构体、数组类型(其他类型尚未实验)。例如:
struct A
{
  public int intValue;
  public String strValue;
}
[WebMethod]
public A GetA()
{
  A a = new A();
  a.intValue = 1;
  a.strValue = "Hello world";
  return a;
}
////
 
var getResult = function(ev)
{
  text1.text = ev.target.results.strValue;
}
 
 
s1.trigger();

相关文章推荐

webservice和socket简单例子

  • 2016年01月15日 16:02
  • 39KB
  • 下载

springmvc整合webservice加整合socket

  • 2017年08月25日 12:16
  • 47.86MB
  • 下载

flash与后台数据交换方法整理3-WebService篇

三、WebService       个人觉得WebService的数据访问速度,仅次于Remoting,但WebService是一种通用型的接口,一般服务端技术都支持的!       WebSe...

多线程socket+webservice操作demo

  • 2014年09月03日 22:03
  • 6.28MB
  • 下载

[dika 记录] cowboy 扩展socket 协议, 以解决flash ,erlang通讯的沙箱为例子

cowboy 的 acceptor pool是通用的,而且说实话,acceptor pool的写法都那样,学习是可以的,但是没必要重复造轮子了. 记录一下 直接使用cowboy做底层sock...
  • dp0304
  • dp0304
  • 2012年06月30日 14:20
  • 3439

将session bean发布为webservice的flash

  • 2008年02月09日 21:33
  • 4.2MB
  • 下载

Axis2 WebService常用功能详解

  • 2015年11月09日 14:03
  • 862KB
  • 下载

服务器反推技术,flex flash socket java javascript

http://hi.baidu.com/wenliang86/blog/item/844cbfca626ae29ac8176876.html 感谢大家的回答: 问题已经解决了: 如下...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Flash的Socket与WebService功能
举报原因:
原因补充:

(最多只允许输入30个字)