=波波日志 > flash/flex/fcs/AIR > 18.13.通过二进制Socket发送和接收二进制数据=
[转]18.13.通过二进制Socket发送和接收二进制数据
18.13.1. 问题
我想接收二进制数据,处理完后以同样的二进制格式发送数据。
18.13.2. 解决办法
使用flash.net.Socket 打开socket 连接。
18.13.3. 讨论
flash.net.Socket 是Flex 框架或ActionScript 3中最低级别的通信工具,使得你能建立socket连接并读取和写入原始的二进制数据。Socket 可接收和发送POP3,SMTP,IMAP 信息,甚至是自定义二进制格式。Flash Player 可以使用这样的二进制协议直接与服务器通信。
要创建一个Socket,先要使用构造器创建Socket 实例,调用connect 方法,传递IP 地址或域名和端口号作为方法参数:
在上面的sendSocketData 方法中,writeMultiByte 方法通过Socket 连接发送数据。该方法接受一字符串值作为发送的二进制数据,第二个参数采用的数据编码。readSocketData 方法读取任何从Socket 发送来的数据,并把读取的数据字节存到ByteArray 对象。如要读取ByteArray 的数据,可使用各种版本的read 方法,包括integers, strings,和arrays 的read 方法。
把Object 作为二进制数据发送后,如果该类型已通过flash.net.RegisterClass 方法注册过,即可使用ByteArray 的readObject 方法读取。
要连接端口号低于1024的Socket,你需要在站点根目录有一个cross-domain.xml 文件,其中明且定义允许的端口号。例如要允许Flash Player 与Web 服务器的80端口通信,可这样写:
正确放置好cross-domain.xml 文件后,Socket 就可以和正确的端口连接了。
我想接收二进制数据,处理完后以同样的二进制格式发送数据。
18.13.2. 解决办法
使用flash.net.Socket 打开socket 连接。
18.13.3. 讨论
flash.net.Socket 是Flex 框架或ActionScript 3中最低级别的通信工具,使得你能建立socket连接并读取和写入原始的二进制数据。Socket 可接收和发送POP3,SMTP,IMAP 信息,甚至是自定义二进制格式。Flash Player 可以使用这样的二进制协议直接与服务器通信。
要创建一个Socket,先要使用构造器创建Socket 实例,调用connect 方法,传递IP 地址或域名和端口号作为方法参数:
+展开
-ActionScript
var socket:Socket;
//create the new socket and connect to 127.0.0.1 on port 8080
private function init():void {
socket = new Socket();
socket.addEventListener(ProgressEvent.SOCKET_DATA,
readSocketData);
socket.connect("127.0.0.1", 8080);
} // send data to the socket
private function sendSocketData(string:String):void {
// send the string data and specify the encoding for the string
// in this case iso-08859-1, standard western european encoding
socket.writeMultiByte(string, "iso-8859-1");
}
// when data is passed to socket, read it into a new ByteArray
private function readSocketData(progressEvent:ProgressEvent):void
{
trace(progressEvent.bytesLoaded);
var ba:ByteArray = new ByteArray();
trace(socket.readBytes(bs));
}
//create the new socket and connect to 127.0.0.1 on port 8080
private function init():void {
socket = new Socket();
socket.addEventListener(ProgressEvent.SOCKET_DATA,
readSocketData);
socket.connect("127.0.0.1", 8080);
} // send data to the socket
private function sendSocketData(string:String):void {
// send the string data and specify the encoding for the string
// in this case iso-08859-1, standard western european encoding
socket.writeMultiByte(string, "iso-8859-1");
}
// when data is passed to socket, read it into a new ByteArray
private function readSocketData(progressEvent:ProgressEvent):void
{
trace(progressEvent.bytesLoaded);
var ba:ByteArray = new ByteArray();
trace(socket.readBytes(bs));
}
在上面的sendSocketData 方法中,writeMultiByte 方法通过Socket 连接发送数据。该方法接受一字符串值作为发送的二进制数据,第二个参数采用的数据编码。readSocketData 方法读取任何从Socket 发送来的数据,并把读取的数据字节存到ByteArray 对象。如要读取ByteArray 的数据,可使用各种版本的read 方法,包括integers, strings,和arrays 的read 方法。
把Object 作为二进制数据发送后,如果该类型已通过flash.net.RegisterClass 方法注册过,即可使用ByteArray 的readObject 方法读取。
要连接端口号低于1024的Socket,你需要在站点根目录有一个cross-domain.xml 文件,其中明且定义允许的端口号。例如要允许Flash Player 与Web 服务器的80端口通信,可这样写:
+展开
-XML
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" to-ports="80" />
</cross-domain-policy>
<cross-domain-policy>
<allow-access-from domain="*" to-ports="80" />
</cross-domain-policy>
正确放置好cross-domain.xml 文件后,Socket 就可以和正确的端口连接了。
类别:flash/flex/fcs/AIR 作者:转载 日期:2010-04-20 【评论:0】
暂时没有评论!
发表留言
百度赞助
同类热门博文
- ·As+lightbox+js实现..
- ·21.8.使用Cairngorm..
- ·13.1.为ArrayCollec..
- ·22.7.使用ModuleLoa..
- ·JavaScript控制Flas..
- ·6.6.动态载入外部图..
- ·flash预加载进度条p..
- ·7.13.用渐变色填充图..
博格Tag
- flash/flex/fcs/AIR(752)
- Asp.Net/C#/WCF(598)
- 操作系统及应用软件(376)
- JavaScript/Ajax(330)
- SQL及数据库(134)
- 黑客技术(115)
- Asp/VBScript(111)
- HTML/WML/CSS兼容/XML(102)
- PHP/apache/Perl(96)
- 网站排名及优化(96)
- 其他(75)
- showbo日志(66)
- lucene.net/分词技术(33)
- 计算机网络(26)
- 机械重工(26)
- C#设计模式(25)
- Google Maps开发(17)
- 日语学习(15)
- Canvas/VML/SVG(13)
- linux(11)
- 游戏开发(8)
- 正则表达式(5)
- Jsp/Java(4)
最新博文
- ·PHP socket套接字学..
- ·Warning Cannot sen..
- ·php与flash as3 soc..
- ·Flash XMLSocket使用..
- ·给flash右键增加自定..
- ·flash控件html及col..
- ·Flash加载XML文件CD..
- ·Flex3中文教程--hom..
随机博文
