尝试在Silverlight中打开套接字时出现访问被拒绝异常

本文关键字:访问 异常 拒绝 套接字 Silverlight | 更新日期: 2023-09-27 17:59:41

我在尝试打开套接字时遇到拒绝访问异常。我的连接功能如图所示。

internal void Connect()
        {
            try
            {
                //AccessPolicy = new SocketClientAccessPolicyProtocol();

                args = new SocketAsyncEventArgs();

                args.UserToken = socket;
                args.RemoteEndPoint = endPoint;
                args.Completed += new EventHandler<SocketAsyncEventArgs>(OnConnect);
                **isConnected = socket.ConnectAsync(args);**
                //autoEvent.WaitOne();
                if (args.SocketError != SocketError.Success)
                    throw new SocketException((int)args.SocketError);
                if(isConnected)
                global::System.Windows.MessageBox.Show("Connected");
            }
            catch (Exception ex)
            {
                global::System.Windows.MessageBox.Show(ex.Message);
            }
        }

但是,函数ConnectAsync执行良好,因为isConnected即将实现,但套接字未连接。

尝试在Silverlight中打开套接字时出现访问被拒绝异常

http://drdobbs.com/windows/208403238

仔细查看代码,您会发现它使用TcpListener类来侦听传入的客户端连接。一旦客户端连接,代码就会检查请求中的以下值:<policy-file-request/>

Silverlight在连接后会自动将此文本发送到策略文件套接字。如果请求包含正确的值,则代码会将客户端访问策略的内容写回客户端流(请参阅OnReceiveComplete()方法)。一旦收到策略文件,Silverlight就会对其进行解析,检查它是否允许访问所需的端口,然后接受或拒绝应用程序试图进行的套接字调用

如果浏览器中有Silverlight,则需要一个套接字策略服务器。看见http://msdn.microsoft.com/en-us/library/cc645032%28v=vs.95%29.aspx详细信息。