目前尚不清楚是否你在談論ASP.NET(或其他網站的東西),使用套接字進行直接通信,遠程處理,WCF或其他。請澄清你是否可以。
看來你在談論輪詢與事件驅動系統。確切的實施和細節取決於上述問題。 「請不要告訴如何製作自定義事件」沒有多大意義:您似乎不想輪詢,並且根據情況,您可能必須創建自定義事件。
更新給你與插座工作的事實:
沒有被觸發的事件,與插座那根本是讀,寫等通話將失敗,SocketException
。
請參閱這裏瞭解更多信息:
Instantly detect client disconnection from server socket
您可以爲此創建您自己的情況下,如果你的插座在另一個線程例如處理,你的線程方法可能看起來是這樣的:
bool running = true;
while (running)
{
try
{
// do socket work here - read/write/etc
}
catch (SocketException)
{
// something happened, e.g. client disconnected. stop thread running.
// you could fire your 'Disconnected' event here.
running = false;
}
}
基本上,當客戶端斷開的socket方法,將拋出SocketException
,你可以檢查原因異常對象的SocketError
財產。這將是其中之一:
http://msdn.microsoft.com/en-us/library/system.net.sockets.socketerror.aspx
這些結果表明已斷開的客戶端:ConnectionReset,NotConnected ......但你幾乎必須註銷整個插座,如果你得到任何SocketException
。
這裏有很多優秀的女士/女孩,最好不要將他們排除在回答之外:) – 2011-04-04 10:07:08
哎呀也 - 你沒有標記你的問題,指定你正在使用的技術。 C#/ Java/ASP.NET /套接字/遠程處理/網絡?試着問*特定的問題,並且包括你已經嘗試過的和出了什麼問題。 – 2011-04-04 10:08:21
你在哪個班級處理連接? – 2011-04-04 10:12:57