我已经在Silverlight 3中使用异步套接字模式实现了一项任务。我开始使用Michael Schwarz's implementation并构建于此之上。所以基本上,我的Silverlight应用程序与设备建立持久的套接字连接,然后在设备和Silverlight应用程序之间根据需要双向传输数据。如何检测套接字断开?
我正在努力的一件事是如何检测断开连接。我可以想到两种方法:
Keep-Alive。我知道这可以在套接字级完成,但我不知道如何在异步模型中完成此操作。 Socket类如何让我知道已经断开连接。
手动保持活动状态。基本上,我正在让Silverlight应用程序每隔20秒发送一个虚拟数据包。如果失败了,我会假定断开连接。然而,令人难以置信的是,即使我只是拔掉Silverlight应用连接的设备,SocketAsyncEventArgs.SocketError也会报告成功。我不确定这是一个错误还是我需要升级到SL4。
任何想法,方向或实施将不胜感激。
你可以调查你的插座吗? http://stackoverflow.com/questions/722240/instantly-detect-client-disconnection-from-server-socket – sbenderli 2010-07-02 13:56:20
@sbenderli方法不可用Silverlight – AngryHacker 2010-07-02 20:45:02
如何尝试发送一个空数据包并捕获套接字错误每过一段时间?有点像手动投票? – sbenderli 2010-07-03 16:28:18