您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Flex与.NET互操作(一):基于Socket的网络连接

2024/3/20 6:37:51发布27次查看
flash/flex也支持基于socket的网络连接 ,服务器端可以是c++,vb,c#,java等任一语言开发。监听一个网络端口便可以接收到flash/flex开发的客户端的连接。
actionscript 3.0提供了通过socket连接的方式与服务器端通信。这点是超越传统b/s结构的重要特征。这样使得网络通信可以即时连接,避免了http协议无状态连接的弊病。actionscript 3.0使用xmlsocket类进行连接。需要注意的是使用xmlsocket类进行socket连接时,不能自动穿过防火墙。要想穿过防火墙连接,则需要使用基于http协议的rtmp协议。
通过查阅adobe提供的api文档可以了解到,xmlsocket提供了四个公开方法:
1、xmlsocket(host:string=null,port:int=0)--创建一个新的xmlsocket对象。
2、close():void--关闭一个xmlsocket。
3、connect(host:string,port:int):void--连接到指定的tcp端口。
4、send(object:*):void--将数据发送到连接服务端。
ok,了解这些后我们就可以用xmlsocket来开发基于socket的网络及时通信应用。下面通过c#提供一个socket的服务端,并监听8888端口。示例程序如下:
<!--<br /><br />code highlighting produced by actipro codehighlighter (freeware)<br />http://www.codehighlighter.com/<br /><br />-->1usingsystem;
2usingsystem.collections.generic;
3usingsystem.linq;
4usingsystem.text;
5usingsystem.net.sockets;
6usingsystem.io;
7
8namespaceflashflexdotnet
9{
10classprogram
11{
12staticvoidmain(string[]args)
13{
14tcplistenerlistener;
15
16try
17{
18listener=newtcplistener(8888);
19}
20catch(exceptionex)
21{
22console.writeline(ex.message);
23return;
24}
25
26listener.start();
27console.writeline(服务器启动,等待客户端连接.);
28boolloop=true;
29
30while(loop)
31{
32sockets=listener.acceptsocket();
33networkstreamns=newnetworkstream(s);
34streamreaderreader=newstreamreader(ns);
35stringresult=string.empty;
36try
37{
38result=reader.readline();
39console.writeline(result);
40}
41catch(exceptionex)
42{
43console.writeline(ex.message);
44}
45}
46}
47}
48}
49
服务器端socket已经准备完毕,下面看看客户端的actionscript的xmlsocket怎么来建立socket连接与.net的socket服务端进行通信。
如本文前介绍,actionscript 3.0提供了基于socket的网络连接类xmlsocket,我们可以直接使用它来开发基于socket的网络通信。如下建立一个基与actionscript 3.0提供的xmlsocket的网络连接:
<!--<br /><br />code highlighting produced by actipro codehighlighter (freeware)<br />http://www.codehighlighter.com/<br /><br />-->1privatefunctionconnectionserver():void
2{
3xmlconn=newxmlsocket();
4xmlconn.connect(127.0.0.1,8888);
5}
随后,便可以通过xmlsocket的实例方法send()向socket服务端发送消息了。如下代码定义:
<!--<br /><br />code highlighting produced by actipro codehighlighter (freeware)<br />http://www.codehighlighter.com/<br /><br />-->1privatefunctiononsend():void
2{
3xmlconn.send(txtdata.text+\n);
4}
客户端完整代码:
<!--<br /><br />code highlighting produced by actipro codehighlighter (freeware)<br />http://www.codehighlighter.com/<br /><br />-->1<?xmlversion="1.0"encoding="utf-8"?>
2<mx:applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"
3backgroundgradientalphas="[1.0,1.0]"
4backgroundgradientcolors="[#cdcae6,#ffffff]">
5<mx:script>
6<![cdata[
7importmx.controls.alert;
8
9privatevarxmlconn:xmlsocket;
10
11privatefunctionconnectionserver():void
12{
13xmlconn=newxmlsocket();
14xmlconn.connect("127.0.0.1",8888);
15}
16
17privatefunctiononsend():void
18{
19xmlconn.send(txtdata.text+"\n");
20}
21]]>
22</mx:script>
23<mx:textareax="43"y="34"height="120"width="263"id="txtdata"/>
24<mx:buttonx="93"y="180"label="连接"fontsize="12"click="connectionserver()"/>
25<mx:buttonx="190"y="180"label="发送"fontsize="12"click="onsend()"/>
26</mx:application>
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product