2009-09-25 22 views
1

我在網上搜索了一個解決方案來解決我的問題,但直到現在沒有結果。
我使用Silverlight應用程序,SocketServer和SocketClient(使用Silverlight應用程序)進行了測試。
在調試模式下,當兩個應用程序都在運行時,當我關閉瀏覽器窗口時,我確實很享受在服務器上觸發事件,並且Socket連接自動關閉。

大神祕開始了。那真的發生了什麼?
按下電源按鈕關閉客戶機器怎麼辦?
我的事件還會被解僱嗎?或者我將最終在服務器上發生堆棧溢出,導致許多未封閉的Socket連接?爲許多未封閉的Silverlight套接字連接防止堆棧溢出

回答

1

在服務器上,你應該真的在輪詢你的套接字連接,看它們是否還活着。發出「你還活着」的消息。

通常,一旦套接字連接丟失,向套接字發送數據將導致它發生異常。

不幸的是,計算機通常無法檢測到套接字是否已經失去鏈接,直到您嘗試使用它爲止。唯一知道的是客戶端(或服務器)發送「關閉連接」命令(通常通過Socket.Close()方法在.NET中完成)。

套筒是這樣的痛苦。