我在尝试打开套接字时遇到Access Denied异常。 我的连接功能如图所示。
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正在实现,但套接字没有连接。
答案 0 :(得分:0)
http://drdobbs.com/windows/208403238
查看代码,您将看到它使用TcpListener类来侦听传入的客户端连接。客户端连接后,代码会检查以下值的请求:
<policy-file-request/>
Silverlight连接后会自动将此文本发送到策略文件套接字。如果请求包含正确的值,则代码会将客户端访问策略的内容写回客户端流(请参阅OnReceiveComplete()方法)。收到策略文件后,Silverlight会对其进行解析,检查它是否允许访问所需的端口,然后接受或拒绝应用程序正在尝试进行的套接字调用。
答案 1 :(得分:0)
如果这是浏览器中的Silverlight,则需要一个套接字策略服务器。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/cc645032%28v=vs.95%29.aspx。