PDA

View Full Version : سوال: قطع ارتباط با سرور



mohsen gh
یک شنبه 04 تیر 1391, 13:50 عصر
سلام دوستان عزیز
به نظر شما چطور باید متوجه قطع ارتباط میان کلاینت ها و سرور شد ؟؟؟

یعنی در لحظه ای که ارتباط قطع شد متوجه بشم ؟؟؟

با پینگ کردن متوجه میشم ولی من میخام که هر لحظه قطع بشه متوجه بشم
با سپاس فراوان

Saeed_m_Farid
یک شنبه 04 تیر 1391, 15:17 عصر
با پینگ کردن متوجه میشم ولی من میخام که هر لحظه قطع بشه متوجه بشم
سلام
هر لحظه قطع بشه (Real-time) که نمیشه متوجه شد! یعنی تا اونجایی که من میدونم همچین سیگنالی نداریم. یعنی در واقع بندرت یه ارتباط مستقیم بین کلاینت ها و سرور هست (مثلآً کابل کراس!)، و معمولاً وقتی کلاینت ارتباط اش مثل آدم قطع میشه، سرور میفهمه ولی اگه مثلاً کوسه کابل رو گاز بگیره یا تریلی از رو سیم شبکه بگذره و ... سرور تا وقتا Timeout نرسه، دو قرونی اش نمی‌افته!
ولی دیگه لازم هم نیست پینگ کنید.
کلاس سوکت یه متد سرشماری! داره خودش بنام Poll (http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.poll.aspx) که شما می‌تونید برای هر سوکت با مد SelectMode.SelectRead بفهمید که الان میشه خوند ازش یا چه خاکی تو سرش افتاده و ...
public static bool IsConnected(Socket socket, int threshold = 10)
{
try
{
return !(socket.Available == 0 && socket.Poll(threshold, SelectMode.SelectRead));
}
catch (SocketException) { return false; }
}
که البته می تونید بصورت Extension (http://www.codeproject.com/Articles/106328/NET-4-0-MEF-FAQ-Socket-Plug-and-extension) برای سوکت‌تون هم بکار ببریدش که فکر نکنم بخواین!