WEB开发网:4) 当连接建立成功之后,客户端与服务端就可以相互发送XML数据了。使用XMLSocket 对象的send方法向服务端发送数据: mySocket.send(myXML);  其中,myXML是一个包
赞助商链接
中资源
>> 最新文章
>> 赞助商
>> 热门文章
WEB开发网文章阅读

flash中通过XMLSocket监控生产系统(2-3)

作者:未知 文章来源:WEB开发者 更新时间:2008-3-4 15:12:36
4) 当连接建立成功之后,客户端与服务端就可以相互发送xml(标准化越来越近了)数据了。使用xml(标准化越来越近了)Socket 对象的send方法向服务端发送数据:

mySocket.send(myxml(标准化越来越近了));

  其中,myxml(标准化越来越近了)是一个包含xml(标准化越来越近了)数据的xml(标准化越来越近了)对象,send方法先把myxml(标准化越来越近了)转化为字符串,然后将该字符串发送到服务端,并在字符串发送后,追加发送一个0字节。send方法没有返回值。

  以下示例中,先生成一个空的xml(标准化越来越近了)对象myxml(标准化越来越近了),然后在myxml(标准化越来越近了)中添加了一个元素节点myLogin,该节点包含两个属性username和password,send方法把myxml(标准化越来越近了)转化成字符串 后,发送给服务端,当然还要追加发送一个0字节,以表示一条xml(标准化越来越近了)数据的完成:

var myxml(标准化越来越近了) = new xml(标准化越来越近了)();
var myLogin = myxml(标准化越来越近了).createElement("login");

myLogin.attributes.username = "morgan";
myLogin.attributes.password = "loveme";
myxml(标准化越来越近了).appendChild(myLogin);

mySocket.send(myxml(标准化越来越近了));

  当有数据到达(收到一条以0字节为结尾的字符串)时,首先将触发onData事件,相应的事件处理函数myOnData带有一个参数,表示当时到达的数据字符串,但不包含0字节,如下例中,服务端传来一个字符串 “I am Morgan Yang !”,加上一个0字节,以下语句将把myTextField(为一非静态文字TextField对象的实例)的内容设为“I am Morgan Yang !”,我们注意到这里发送的数据,可以是包括xml(标准化越来越近了)格式在内的任何形式:

function myOnData(src) {
myTextField.text = src ;
}

对于onData事件,如果没有相应的事件处理函数,默认将触发onxml(标准化越来越近了)事件,形式如下:

xml(标准化越来越近了)Socket.prototype.onData = function (src) {
this.onxml(标准化越来越近了)(new xml(标准化越来越近了)(src));
}

  即在onxml(标准化越来越近了)事件中,使用onData事件中得到的数据生成一个xml(标准化越来越近了)对象,并把该对象作为参数传给onxml(标准化越来越近了)事件的处理函数,所以如果要自定义onxml(标准化越来越近了)事件的处理函数,服务端发送来的数据就必须是xml(标准化越来越近了)格式,否则就会发生意想不到的错误。如果设置了onData事件的处理函数,当数据到达时,将不再调用onxml(标准化越来越近了)事件的处理函数,除非在显式地调用,所以在某种意义上,两种事件是互斥的。

  在没设置onData事件处理函数,又设置了onxml(标准化越来越近了)事件处理函数情况下,当有xml(标准化越来越近了)数据 到达时,以下语句将把两个非静态文字实例nameTextField和passwordTextField的内容分别设为“Morgan”和“loveme”:

function myOnxml(标准化越来越近了)(doc) {

var e = doc.firstChild;

if (e != null && e.nodeName == " login ") {

nameTextField.text = e.attributes.username ;
passwordTextField.text = e.attributes.password ;
}
}

5) 最后,在程序结束的时侯,使用xml(标准化越来越近了)Socket 对象的close方法,关闭Socket连接,如下:

mySocket.close();

  需要注意的是,使用xml(标准化越来越近了)Socket 对象的close方法,来关闭Socket连接不触发xml(标准化越来越近了)Socket对象的onClose事件,只有当Socket连接被服务端关闭时,才在Flash应用客户端触发该事件,默认情况下,xml(标准化越来越近了)Socket 对象的onClose事件处理函数不执行任何动作,可以自定义该事件处理函数,以达到特定目的。如以下语句,在onClose事件发生时,把myTextField(为一非静态文字实例)的内容设为 “Socket Closed By Server !”

function myOnClose() {
myTextField .text = "Socket Closed By Server !" ;
}
百度搜索中共有相关主题
[阅读:次] [返回上一页] [打 印]
  • 相关文章
  • 本类热门