我有一个Silverlight客户端,使用SL4,并使用.NET 4.服务器一个C#服务器打开一个端口4525,该客户端是为了连接。 现在,如果我可以问,你根本看下面,我们或许可以避开我不得不张贴任何进一步的代码:
客户端试图建立到服务器的连接,开辟了政策文件的连接,请求政策文件,并得到返回的政策文件。 什么是不发生的,是在客户端中的onConnect事件。 之前,我实现了一个策略服务器,客户端将连接上4525,并执行的onConnect事件,但立即失败,因为没有策略服务器。 现在,我已经实现了策略服务器,看来,它永远不会检测其交付的定稿。
这里是传输概要:
Client:
<policy-file-request/>
Server:
<?xml version="1.0" encoding ="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from>
<domain uri="*:4525" />
</allow-from>
<grant-to>
<socket-resource port="4525" protocol="tcp" />
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
有效; 我想回答,唯一的问题是这样的:我失去了从我的政策文件的东西,或者我需要它的结论提交给客户在任何特定的方式,以便为我的客户,以检测其交付?
Things of note:
The Client successfully establishes its connection to the policy server
The policy server successfully writes the policy back to the client
The 'real' servers port is successfully opened
The client 'can' connect to the 'real' server
谢谢大家的时间,我肯定会有人能够帮助。
代码请求 客户端连接
不知道,这是朝中找到答案的任何进一步后果的; 但:
private static DnsEndPoint IP_END_POINT = new DnsEndPoint("192.168.0.36", 4525, AddressFamily.InterNetwork);
public MainPage()
{
try
{
InitializeComponent();
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
SocketAsyncEventArgs connectEventArgs = new SocketAsyncEventArgs();
connectEventArgs.RemoteEndPoint = IP_END_POINT;
connectEventArgs.Completed += new EventHandler<SocketAsyncEventArgs>(ConnectionEstablished);
socket.ConnectAsync(connectEventArgs);
}
catch (Exception e)
{
}
}
新发展 “已建立连接”火!
因此,事实证明,如果我想一分钟左右,我的“ConnectionEstablished”事件不火,最终。 我从它那里得到什么,但是,是不是那么令人鼓舞。
我结束了的“存取遭拒”一SocketError,和“且试图通过其访问权限不允许的方式来访问的插座。”的消息,并且可以预期,我的服务器从来没有接受连接。 我知道服务器端口开放,并且可以接受的连接,所以这是非常令人困惑的情况。
再次感谢任何人的帮助。