From 3f87bf0ae7394cdd7d52428f1f6b4361434c7cc4 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期五, 15 五月 2020 13:28:33 +0800 Subject: [PATCH] hhhhhhhhh --- ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs | 39 +++++++++++++++++++++++++++++++++++++-- 1 files changed, 37 insertions(+), 2 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs b/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs index 04c6a57..c446b42 100755 --- a/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs +++ b/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs @@ -333,7 +333,7 @@ public static class FindGateWaySocket { //鏈湴Socket - public static System.Net.Sockets.Socket busSocket; + public static Socket busSocket; /// <summary> /// 鍚姩Socket鎺ユ敹鍜屽彂閫佸姛鑳� @@ -379,7 +379,7 @@ { get { - return null == busSocket ? false : true; + return busSocket == null ? false : true; } } @@ -391,12 +391,47 @@ { try { + //妫�娴嬭繛鎺ョ姸鎬� + CheckConnectiton(); + Start(7624); busSocket.BeginSendTo(bytes, 0, bytes.Length, SocketFlags.None, iPEndPoint, new AsyncCallback(asyncEndSend), null); } catch { } } + /// <summary> + /// 妫�娴嬭繛鎺ョ姸鎬� + /// </summary> + private static void CheckConnectiton() + { + if (busSocket == null) { return; } + + bool blockingState = busSocket.Blocking; + try + { + byte[] tmp = new byte[1]; + + busSocket.Blocking = false; + busSocket.Send(tmp, 0, 0); + //tcp杩樺湪杩炴帴鐫� + busSocket.Blocking = blockingState; + } + catch (SocketException e) + { + // 10035 == WSAEWOULDBLOCK + if (e.NativeErrorCode.Equals(10035)) + { + //Still Connected, but the Send would block + } + else + { + //tcp宸茬粡鏂紑浜嗚繛鎺� + Stop(); + } + } + } + /// <summary> /// 寮傛鍙戦�佹暟鎹粨鏉� /// </summary> -- Gitblit v1.8.0