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与Webservice的区别

Socket 与 Webservice 的区别 socket是一种协议,采用tcp或udp协议通信。 Tcp、udp属于网络层,上边各层的应用都需要我们自己实现,例如端口的定义,数据包的定...
  • WaitForFree
  • WaitForFree
  • 2014年08月20日 08:51
  • 4994

Webservice与socket的区别

Webservice与socket的的通信图示:两者区别:Socket 是基于TCP/ip的传输层协议 Webservice是基于http协议传输数据,http是基于tcp的应用层协议 Webs...
  • cnctcom
  • cnctcom
  • 2016年11月25日 11:48
  • 1718

Flash Socket 的基本通讯协议流程例子

原文:http://www.sujun.org/article.asp?id=51 actionscript3.0 Socket通信实例文章收藏:http://as3.aa-a.net/index....
  • penguin_whl
  • penguin_whl
  • 2012年05月09日 09:30
  • 4570

webservice和scoket比较分析

肯定是 Socket 快了! WebServices 是建立在 HTTP 基础之上的,而 HTTP 是建立在 TCP 基础上的。也就是说 WebServices 在 TCP 基础上包装了两层! ...
  • wkkzmm126
  • wkkzmm126
  • 2014年05月26日 08:02
  • 1747

Socket连接代码示例、WebService 小demo示例

最近面试遇到的问题 1:开闭原则 开放对原来代码的扩展,封闭对原来代码的修改2:http协议 A : URL是http(超文本传输协议)是基于请求与响应模式的、无状态的、应用层协议。长基于TCP的...
  • C_ZuoYue
  • C_ZuoYue
  • 2015年07月23日 23:19
  • 1613

对Flash的Socket和AMF3的研究心得

最近考虑结合Flash的Socket和AMF3来实现聊天室功能,Socket比起原来的XMLSocket来说,增加了可传递二进制数据,而AMF3 则可以封装很多类型的数据,并且从flash play...
  • wkyb608
  • wkyb608
  • 2010年10月11日 09:47
  • 744

java与Flash的Socket通讯

Flash与JAVA的Socket通信 import java.io.*; import java.net.*; public class AMFServer { public void start(...
  • nmgchfzhzhg
  • nmgchfzhzhg
  • 2010年09月12日 21:12
  • 3070

java与FlashSocket通信安全

在Adobe Flash Player升级到9.0.124后,由于安全策略的更改,使得在socket或xmlsocket的应用里,原先如用http方式加载安全策略的手段不能继续使用了,类似此类应用必须...
  • jackliang55
  • jackliang55
  • 2010年10月31日 20:59
  • 684

Socket与webservice的比较

一 区别 1. socket是一种协议,采用tcp或udp协议通信。Tcp、udp属于网络层,上边各层的应用都需要我们自己实现,例如端口的定义,数据包的定义,数据包的加密解密等。 2. web...
  • finallylly
  • finallylly
  • 2015年04月05日 14:59
  • 914

flash与c++进行Socket进行简单通信

一、简介       用flash去开发应用,,免不了网络通讯,特别是网络游戏,需要用到即使通讯。 as3提供了两个支持即时通讯的类:XMLSocket和Socket,       前者其实是只支持发...
  • u010150082
  • u010150082
  • 2013年10月29日 17:07
  • 1723
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Flash的Socket与WebService功能
举报原因:
原因补充:

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