尝试在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即将实现,但套接字未连接。
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详细信息。