1.flash.net.Socket/XMLSocket
Security.loadPolicyFile(((("xmlsocket://" + domain) + ":") + port));
发送的请求: <policy-file-request/>\0
注意响应的crossdomain.xml:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<cross-domain-policy>
<site-control permitted-cross-domain-policies=\"all\" />
<allow-access-from domain=\"*\" to-ports=\"*\" />
<allow-http-request-headers-from domain=\"*\" headers=\"*\"/>
</cross-domain-policy>\0
http: Security.loadPolicyFile("http://www.domain.com/crossdomain.xml")
注意: XMLSocket并非传输的一定是xml document. 记得 new XML(event.data),还有\r\0 结尾.
XMLSocket.send(object to string+\0) .
2.ExternalInterface.available 判断是必要的,在浏览器环境 or 在flashplayer环境.
3.ByteArray.bytesAvailable,Socket.bytesAvailable,如果read方法要读取的字节数超过bytesAvailable,
那么Error #2030 .在Socket(not XMLSocket) data handle的时候由于网络,传输的数据量多等原因很容易出现这种情况.这就有可能造成数据在传输上产生碎片片段,比如一个完整的消息有可能会触发多次 socket data handle Event.相比而言,XMLSocket更易用.