加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:27:09 所属栏目:百科 来源:网络整理
导读:?Flash/Flex也支持基于Socket的网络连接 ?,服务器端可以是C++,VB,C#,Java等任一语言开发。监听一个网络端口便可以接收到Flash/Flex开发的客户端的连接。????? ?????ActionScript 3.0 提供了通过 Socket 连接的方式与服务器端通信。这点是超越传统 B/S 结构

?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端口。示例程序如下:

复制代码

?1? using ?System;
?2? ?System.Collections.Generic;
?3? ?System.Linq;
?4? ?System.Text;
?5? ?System.Net.Sockets;
?6? ?System.IO;
?7?
?8? namespace ?FlashFlexDotNet
?9? {
10? ???? class ?Program
11? ????{
12? ???????? static ? void ?Main( string []?args)
13? ????????{
14? ????????????TcpListener?listener;
15? 16? ???????????? try 17? ????????????{
18? ????????????????listener? = new ?TcpListener( 8888 );
19? ????????????}
20? catch ?(Exception?ex)
21? 22? ????????????????Console.WriteLine(ex.Message);
23? ???????????????? return ;
24? 25? 26? ????????????listener.Start();
27? ????????????Console.WriteLine( " 服务器启动,等待客户端连接

.
" 28? bool ?loop? true 29? 30? while ?(loop)
31? 32? ????????????????Socket?s? ?listener.AcceptSocket();
33? ????????????????NetworkStream?ns? ?NetworkStream(s);
34? ????????????????StreamReader?reader? ?StreamReader(ns);
35? ?result? .Empty;
36? 37? ????????????????{
38? ????????????????????result? ?reader.ReadLine();
39? ????????????????????Console.WriteLine(result);
40? ????????????????}
41? 42? 43? ????????????????????Console.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的网络连接:

1? private ?function?connectionServer(): 2? 3? ????xmlConn? ?XMLSocket();
4? ????xmlConn.connect( 127.0.0.1 , 5? }

?????随后,便可以通过XMLSocket的实例方法send()向Socket服务端发送消息了。如下代码定义:

?function?onSend(): ????????xmlConn.send(txtData.text? + ? n ????}

?????客户端完整代码:

<? xml?version="1.0"?encoding="utf-8" ?> < mx:Application? xmlns:mx ="http://www.adobe.com/2006/mxml" ?layout ="absolute" ?
?3? ????backgroundGradientAlphas ="[1.0,?1.0]" ?4? ????backgroundGradientColors ="[#CDCAE6,?#FFFFFF]" > mx:Script <! [CDATA[
?7? ????????????import?mx.controls.Alert;
?8? ????????????
?9? ????????????private?var?xmlConn:XMLSocket;
10? 11? ????????????private?function?connectionServer():void
12? ????????????{
13? ????????????????xmlConn?=?new?XMLSocket();
14? ????????????????xmlConn.connect("127.0.0.1",8888);
15? ????????????}
16? 17? ????????????private?function?onSend():void
18? 19? ????????????????xmlConn.send(txtData.text?+?"n");
20? 21? ????????]] </ mx:TextArea? x ="43" ?y ="34" ?height ="120" ?width ="263" ?id ="txtData" /> mx:Button? ="93" ="180" ?label ="连?接" ?fontSize ="12" ?click ="connectionServer()" ="190" ="发?送" ="onSend()" mx:Application >
?????如下为本文示例程序测试结果图:

?????

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读