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

flash/flex socket通讯实例

发布时间:2020-12-15 18:15:21 所属栏目:百科 来源:网络整理
导读:Socket 套接字连接允许Flash播放器通过指定的端口与服务器通信,socket连接与其他通信技术 最大的不同是socket连接在数据传输完成后不会自动关闭。 当socket连接创建后,连接会一直保持,直到客户端(Flash播放器)和服务端主动关闭,因此 服务器可在任何时

Socket 套接字连接允许Flash播放器通过指定的端口与服务器通信,socket连接与其他通信技术
最大的不同是socket连接在数据传输完成后不会自动关闭。
当socket连接创建后,连接会一直保持,直到客户端(Flash播放器)和服务端主动关闭,因此
服务器可在任何时间不用客户端请求即可发送数据给客户端。
Socket连接被普遍用于创建多用户应用程序,比如说一个在线聊天室,它有一个服务端程序和
无数个Flash客户端组成。每次客户端发送消息给服务器,服务器检测那些用户可以收到这些消
息并把消息传给指定客户端,这种情况下接收客户端并没有提前请求数据而是通过服务器主动
推送数据的。当客户端关闭时,服务端提示其他客户端某客户端已离线。
Flash播放器提供了两种类型的socket连接。一种是早期版本就有的XMLSocket,Flash播放器9增
加了二进制socket连接。
使用flash.net.XMLSocket类创建XML数据格式的socket连接,使用flash.net.Socket类创建二进制数
据格式socket连接。
XML socket连接以XML数据报交换数据,二进制socket连接是ActionScript 3.0新增的功能,相比
之下更低级,但功能很强大,几乎可以连接任意类型的socket服务端程序。例如二进制sockets 可
连接邮件服务端程序(POP3,SMTP,和IMAP),新闻服务器(NNTP),聊天室服务器或远程桌面
VNC服务器( RFB)。
不管是哪种类型的socket 连接,其通信方式都是异步的,也就是说你不能直接从socket 连接中
读取数据,而是通过事件处理函数进行读取处理。

以上问第三方翻译

下面贴出我写的一段代码没有什么实在意思仅为学习之用,写得不好不请各位多指教

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?xml version= "1.0"? encoding= "utf-8" ?>
<mx:Application xmlns:mx= "http://www.adobe.com/2006/mxml"? layout= "vertical"? verticalAlign= "middle"? fontSize= "12"? creationComplete= "onInit()" >
???? <mx:ViewStack id= "viewstack1"? width= "454"? height= "338"? selectedIndex= "0" >
???????? <mx:Canvas label = "View 1"? "100%"? "100%" >
???????????? <mx:TitleWindow width= "absolute"? title= "连接设置" >
???????????????? <mx:Button x= "181"? y= "186"? "连??? 接"? click= "onConnect()"? id= "btnCon" />
<mx:TextInput x= "31"? "txtHost"? text= "127.0.0.1"? "184" />
"94"? "txtPort"? "184"? "6000" />
<mx:Label x= "74"? "链接地址:" />
"连接端口:" />
"297"? "清??? 空"? "onEmpty()" />
</mx:TitleWindow>
</mx:Canvas>
>
"消息窗口" >
<mx:TextArea x= "10"? "414"? "176"? "txtRec" />
"160"? "262"? "发??? 送"? "onSendData()"? />
"260"? "断??? 开"? "onClose()" />
"194"? "txtSend"? "45" />
<mx:Text x= "201"? "202"? "正在断开,请稍后..."? visible= "false"? "msg" />
"355"? "关??? 闭"? "onCloseWindow()" />
</mx:TitleWindow>
</mx:Canvas>
</mx:ViewStack>
?????
<mx:Script>
<![CDATA[
???????????? import? mx.controls.Alert;
flash.net.Socket;
flash.utils.ByteArray;
flash.events.SecurityErrorEvent;
flash.events.IOErrorEvent;
flash.events.ProgressEvent;
?????????????
???????????? //全局变量
private? var? socket:Socket= new? Socket();
//连接
private? function? onInit(): void
{
socket.addEventListener(Event.CONNECT,connect);
socket.addEventListener(Event.CLOSE,onClosed);
socket.addEventListener(IOErrorEvent.IO_ERROR,onIoError);
socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onSeurity);
socket.addEventListener(ProgressEvent.SOCKET_DATA,onReceiveData);
}
?????????????
connect(e:Event): void
{
???????????????? this .viewstack1.selectedIndex= 1 ;
}
?????????????
onClosed(e:Event): void
{
?????????????????
}
?????????????
//连接服务器
onConnect(): void
{
???????????????? host: String = .txtHost.text;
port: Number? = Number ( .txtPort.text);
if (!(host&&port))
{
???????????????????? Alert.show( "服务器地址和端口不能为空!" , "提示" );
???????????????????? return ;
}
socket.connect(host,port);
}
//关闭服务器
onClose(): void
{
socket.close();
0 ;
}
?????????????
//IO错误
onIoError(evt:IOErrorEvent): void
{
Alert.show(evt.text,monospace!important; min-height:inherit!important; white-space:pre-wrap; color:blue!important">"IO错误!" );
}
//安全策略错误
onSeurity(evt:SecurityErrorEvent): void
{
"安全策略错误" );?
}
?????????????
//发送
onSendData(): void
{
buff:ByteArray= ByteArray();
buff.writeUTF( .txtSend.text);
socket.writeBytes(buff, socket.flush(); //发送数据
}
//接收
onReceiveData(evt:ProgressEvent): void
{
while (socket.bytesAvailable)
{
.txtRec.text+=socket.readMultiByte(socket.bytesAvailable,monospace!important; min-height:inherit!important; white-space:pre-wrap; color:blue!important">"utf8" )+ "n" ;
}
}
?????????????
/**ui操作**/
//清空
onEmpty(): void
{
.txtHost.text= "" ;
.txtPort.text= ;
.txtHost.setFocus();
}
//关闭浏览器
onCloseWindow(): void
{
request:URLRequest = URLRequest( "javascript:window.close()" );
navigateToURL(request,monospace!important; min-height:inherit!important; white-space:pre-wrap; color:blue!important">"_self" );
}
?????????????
]]>
</mx:Script>
</mx:Application>

最后在附上一个策略文件服务器

下载地址:http://files.cnblogs.com/wangleicode/policyServer.rar


转载:http://www.cnblogs.com/wangleicode/archive/2010/12/22/1914054.html

(编辑:李大同)

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

    推荐文章
      热点阅读