目前尚不清楚是否你在谈论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