Re: [問題] 如何判斷 socket disconnect
自問自答...,其實 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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):