您的位置:首页 > 大数据 > 人工智能

如何给Flash的Socket验证提供crossdomain.xml文件服务端口。

2008-07-17 08:47 483 查看
}
如果你不是对Actionscript 3的socket或者xmlsocket有研究的话,请忽略此文。
Flash 9的某个版本之后,socket的连接低端口需要一个domain认证才可以访问低端口。当然,这是由于浏览器本身的sandbox的安全性的问题。按下不表,就说如何提供xmlsocket://这样的服务端口的问题。

直接贴代码,实际上flash访问这个端口也是用的tcp连接,所以我们可以创立一个tcplistener来做这件事情,然后当有请求到这里的时候,把crossdomain.xml以二进制方式异步回写过去才可以。同步方法则肯定会有问题。

代码如下:

while (true)
{
try
{

if(_mainListener.Pending())
{
Socket s = _mainListener.AcceptSocket();

if(_bytebuffer!=null)
{
s.BeginSend(_bytebuffer, 0, _bytebuffer.Length, SocketFlags.None, new AsyncCallback(CloseSocket), s);
}

}



}
catch (Exception e)//如果出现异常则打控制台打印到屏幕
{
string test = e.Message;
}

Thread.Sleep(100);

然后在异步调用的callback里关闭这个socket

private void CloseSocket(IAsyncResult ar)
{
if(ar.IsCompleted)
{
Socket workingsock = ar.AsyncState as Socket;

workingsock.Shutdown(SocketShutdown.Send);

workingsock.Close();
}

}



这样就可以确保每次请求认证过来都是可以得到及时的应答的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: