您的位置:首页 > 其它

[ActionScript 3.0] AS3 socket示例(官方示例)

2015-08-21 15:08 411 查看
下例对套接字执行读写操作,并输出在套接字事件期间传输的信息。 该示例的要点遵循:

该构造函数创建名为
socket
CustomSocket
实例,并将主机名
localhost
和端口 80 作为参数传递。 由于
CustomSocket
扩展了 Socket,因此在调用
super()
时将调用 Socket 的构造函数。

然后,该示例调用了
configureListeners()
方法,该方法可为 Socket 事件添加侦听器。

最后,调用套接字
connect()
方法,其中使用
localhost
作为主机名并使用 80 作为端口号。

注意:若要运行该示例,您需要一台与 SWF 位于同一个域(在本例中为
localhost
)服务器并侦听端口 80。

package
{
import flash.display.Sprite;

/**
* @author Frost.Yen
* @E-mail 871979853@qq.com
* @create 2015-8-21 下午2:53:03
*
*/
public class SocketExample extends Sprite
{
public function SocketExample()
{
var socket:CustomSocket = new CustomSocket("localhost", 80);

}
}
}
import flash.errors.*;
import flash.events.*;
import flash.net.Socket;

class CustomSocket extends Socket {
private var response:String;

public function CustomSocket(host:String = null, port:uint = 0) {
super();
configureListeners();
if (host && port)  {
super.connect(host, port);
}
}

private function configureListeners():void {
addEventListener(Event.CLOSE, closeHandler);
addEventListener(Event.CONNECT, connectHandler);
addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
}

private function writeln(str:String):void {
str += "\n";
try {
writeUTFBytes(str);
}
catch(e:IOError) {
trace(e);
}
}

private function sendRequest():void {
trace("sendRequest");
response = "";
writeln("GET /");
flush();
}

private function readResponse():void {
var str:String = readUTFBytes(bytesAvailable);
response += str;
}

private function closeHandler(event:Event):void {
trace("closeHandler: " + event);
trace(response.toString());
}

private function connectHandler(event:Event):void {
trace("connectHandler: " + event);
sendRequest();
}

private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}

private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}

private function socketDataHandler(event:ProgressEvent):void {
trace("socketDataHandler: " + event);
readResponse();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: