博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flash的Socket与WebService功能
阅读量:4124 次
发布时间:2019-05-25

本文共 1529 字,大约阅读时间需要 5 分钟。

最近接触了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属性,例如:
设置它的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();

转载地址:http://cjopi.baihongyu.com/

你可能感兴趣的文章
为什么wait()和notify()需要搭配synchonized关键字使用
查看>>
ThreadLocal及其原理
查看>>
JDK命令行工具的监控
查看>>
《OS、Network、Kernel》PDF资源汇总
查看>>
条件变量 pthread_cond_init
查看>>
关于vim,ctags的一个小技巧
查看>>
最小生成树 - E - QS Network
查看>>
最小生成树 - H - Highways
查看>>
洛谷 P1443 马的遍历(BFS)
查看>>
洛谷 P1020 导弹拦截(动态规划)
查看>>
洛谷 P1091 合唱队形
查看>>
AtCoder Beginner Contest 090题解
查看>>
Java Web实验之简单的网站注册登录
查看>>
Java实验之基于GUI的网络通信程序设计
查看>>
Java实验之货物进销管理系统
查看>>
01字典树求异或最大值与最小值模板(带删除)
查看>>
ACM及OI大佬的博客(待补充)
查看>>
Atcoder-蓝名总结
查看>>
对于topcoder客户端java安全阻止解决的办法
查看>>
Topcoder客户端配置
查看>>