首页 > 设计 > WEB开发 > 正文

24.1.连接Socket服务器

2023-08-14 18:53:42
字体:
来源:转载
供稿:网友
问题
我想连接socket服务器
解决办法
使用Socket.connect( )或XMLSocket.connect( )方法建立连接并监听connect事件确定连接是否建立。
讨论
要连接socket服务器,首先要知道域名或IP地址,还要知道端口,不管是使用Socket 还是XMLSocket,连接步骤是一样的,都是用connect( )方法进行连接,该方法接受两个参数:
host
指定域名或IP地址,如www.example.com或192.168.1.101。
port
数字,指定连接的端口号,必须大于1024,如果小于1024则需服务器提供策略文件允许。

因为是异步通信,connect( )方法不会等待结果而是继续执行下面的语句,因此需要注册事件监听器来获取连接结果。

注册事件监听器必须在调用connect( )方法之前,当连接成功时connect事件就会触发,下面的例子演示连接本机2900端口:
+展开
-ActionScript
package {
import flash.display.Sprite;
import flash.events.*;
import flash.net.Socket;
public class SocketExample extends Sprite {
private var socket:Socket;
public function SocketExample( ) {
socket = new Socket( );
// Add an event listener to be notified when the connection
// is made
socket.addEventListener( Event.CONNECT, onConnect );
// Connect to the server
socket.connect( "localhost", 2900 );
}
private function onConnect( event:Event ):void {
trace( "The socket is now connected..." );
}
}
}

如果使用XMLSocket,代码也基本上相同,代码如下:
+展开
-ActionScript
package {
import flash.display.Sprite;
import flash.events.*;
import flash.net.XMLSocket;
public class SocketExample extends Sprite {
private var socket:XMLSocket;
public function SocketExample( ) {
socket = new XMLSocket( );
// Add an event listener to be notified when the connection is made
socket.addEventListener( Event.CONNECT, onConnect );
// Connect to the server
socket.connect( "localhost", 2900 );
}
private function onConnect( event:Event ):void {
trace( "The xml socket is now connected..." );
}
}
}

如果连接失败,可能的异常有:runtime error,ioError,securityError ,记住,当用socket连接主机时,要遵循Flash Player安全沙漏规则:
swf 和主机必须在同一个域;
网络上的swf不能连接本地服务器;
本地的swf 不能访问任何网络资源;
要允许域名交叉访问或连接低于1024的端口,需要提供cross-domain 策略文件。


如果Socket 或XMLSocket 对象要使用cross-domain 策略文件, 可通过方法flash.system.Security.loadPolicyFile( )读取:
+展开
-ActionScript
Security.loadPolicyFile("http://www.rightactionscript.com/crossdomain.xml");

cross-domain策略文件例子:
+展开
-XML
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domainpolicy.
dtd">

<cross-domain-policy>
<allow-access-from domain="*" to-ports="80,110" />
</cross-domain-policy>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表