作者archon (三脚猫的把戏)
看板C_Sharp
标题Re: [问题] 如何判断 socket disconnect
时间Wed Oct 8 18:08:25 2008
自问自答...,其实 MSDN 里就有答案了...
Socket.Connected 属性值
如果最近一次的作业是将 Socket 连接到远端资源,则为 true,
否则,即为 false。
Connected 属性会取得最近一次 I/O 作业的 Socket 连接状态。
传回 false 时,即表示 Socket 不是从未连接过,就是不再连接了。
Connected 属性的值会反映最近一次作业的连接状态。
如果您需要判断连接的目前状态,请执行非封锁、零位元组的 Send 呼叫。
如果该呼叫成功传回或掷回 WAEWOULDBLOCK 错误码 (10035),
则表示通讯端仍在连接中,否则,就表示通讯端已不再连接。
==================================================================
我之前造成的问题,是我用 step by step 在执行程式,
按一下 F10 就思考一下,可能中间有一些时间上的问题,
搞到 socket 都 time-out 了,所以造成了一些无法收舍的後果。
现在我直接 Run,已经可以正确的判断 socket 到底有没有断线了。
感谢大家... <(_ _)>
※ 引述《archon (三脚猫的把戏)》之铭言:
: 我写了个简单的 Client-Server 结构,
: Server 收封包的部份用 thread 来跑底下这个副程式:
: 收封包的时候运作正常,但是当 Client 端要切断连线时,
: Server 端却无法得知 Socket 已经断线了,
: 我在 Client 端用了三种函式来切断连线,分别是:
: Shutdown(SocketShutdown.Both);
: Disconnect(true);
: Close();
--
追根究底所得到的东西,是失望的观众,以及狼狈的魔术师...
De'Ring Practice
http://www.im.tv/vlog/Personal/623262/2093392
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.42.81