Re: [問題] 如何判斷 socket disconnect

看板C_Sharp作者 (三腳貓的把戲)時間15年前 (2008/10/08 18:08), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
 自問自答...,其實 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
文章代碼(AID): #18x8QR-l (C_Sharp)
文章代碼(AID): #18x8QR-l (C_Sharp)