From 59ee584c2c7ad374ad6f0e1d23d7f52b05962897 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Fri, 21 Jun 2024 17:17:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AE=A2=E6=88=B7=E7=AB=AF?= =?UTF-8?q?=E9=87=8D=E8=BF=9E=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lib/HaoYueNet.ClientNetwork.dll | Bin 20992 -> 32768 bytes Lib/HaoYueNet.ServerNetwork.dll | Bin 24064 -> 24064 bytes .../HaoYueNet.ClientNetworkNet.Standard2.dll | Bin 21504 -> 21504 bytes .../Manager/AppLocalClient.cs | 24 +- NoSugarNet.ClientCore/Manager/AppLogin.cs | 10 +- .../Manager/LocalClient/LocalListener.cs | 41 +- .../LocalClient/LocalListener_Source.cs | 520 +++++++++--------- .../Manager/UserDataManager.cs | 2 +- .../Network/NetworkHelper.cs | 13 +- .../PublishProfiles/FolderProfile.pubxml.user | 2 +- .../PublishProfiles/FolderProfile.pubxml.user | 2 +- .../NoSugarNet.ClientCli.csproj.user | 2 +- Sample/NoSugarNet.ClientCli/Program.cs | 6 + .../PublishProfiles/FolderProfile.pubxml | 5 +- .../PublishProfiles/FolderProfile.pubxml.user | 2 +- .../PublishProfiles/FolderProfile.pubxml.user | 2 +- 16 files changed, 356 insertions(+), 275 deletions(-) diff --git a/Lib/HaoYueNet.ClientNetwork.dll b/Lib/HaoYueNet.ClientNetwork.dll index bc3795c09dfe097d8b0fb589a2bb57a6e3f8e2cf..62b18f601a331a80715d532b4ca5728a3fe3c427 100644 GIT binary patch literal 32768 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 U>ohDI#p;+m+eJNizKhrY1tU*vw*UYD diff --git a/Lib/HaoYueNet.ServerNetwork.dll b/Lib/HaoYueNet.ServerNetwork.dll index 6e7dce7c7025ae2001f1467cf81452b6175c0442..4e568e7af5c67ff0010155c1e1c12aeaa8c69354 100644 GIT binary patch delta 1757 zcmai!e{54#6vw~!_4d*I=wlr}whWLiBMZvre)MguxKUtZ8#o+{;Wioj(XBEHS!oc5 zf^0K5O=Pn2qNu1LkPr=v8XpGGMUfzhVMZWJ97veN;Qml#1c+$Bc;35L!hfc@_ny!B zo^yYkp0;O*^$f9r*ZAo#oISDKgU*TPfm-96hGOFdmcp(ZG1kRSn{mpG1U72?r$p92WOtZK${U=WGh#EMsT)Xer}bw7Yzlwq;zruc;u8D% zMMD5QP7$JtkhHLTn?R2`-Q$deX{$`(h$GoBW*)RFMECf=3I%2@a}G0L*zBJbvx+o( zwpFCyY^z8q-g2^=y!Tk6xi)={!W?E#hVDpIkr{UoX*e0bD$zWdS*~{9rlJ77m{4?{ zi>cXy#@SAuhbo);kmG)Z`>;uB-%nCefU3tuWSb+(3&3*(oz?nzA<87xIr@1KT)9Ha zn%vJ9pjOg7H3`L7-)&nxUV<$)^`(|3s3^hq2gHa51ff8ElP|=mq-=FR55Sve z9nt5i)Vv5FTM(3Zm1u!Yy{g&RtDhQR{qU{l=D3gZwWzYFn~t{{su@KkBGGE7W=u#rtDWL4 z$XzJ3I>#yAj=PeqhU!2|KxkG&h4GxEi&~U##IU4&Y?yDto<&xq=(SGlx2an+TPF_L zXc0pvjtin@8{rXPG3C*{v(-y{Gb#ny&9)h9q-HhSW&~||3%@0dQDoNxy2hi}Eol@t z_*M)HnuA|)mv6(gCDsvEqRY7hS&~NSPox_I=AqnIUCtA%Zqk_XsK3CwLivuBCfq_g zd!5xNG`kyU4zmX31PjOg#LQj(4u@x){lV@tmoiPsQ1X<3(q!H*KE~J`>i%0fWfBp6`Ut3|~UNg03jJYOxmH2p1&sF2k)lqiM*ibve z++BOkF}F3O>%pQ>u+<-GYo$qV&kq(Bh4hfm-`1KN^3llm7v{}3-l@-+R(|X5Wv~@1 z6?)^#G|IYY80YI#oM*^7V_dJ#NII{5+tPIN#;3X*)Q~28Y>^xA}tu-XD^OPN$`I0ZpQcX-O{^dsq%TCz7m>9nv$TCz)x(0Nmn> z+#E4gNjlwAx%c7~3GWx|gwy;xqSI+J`;MY5$4m7TY8eS&P|b zap#%&;%-(RYZcddQFbxFqgw#ye81FhLYrQeebQ0ePO&!@Qda6W{Qd>xwnf7fwF1&V za*T?<-a(OQ=R`Os8u{P;RXsoFFlT4Qr@1lKC1&MKW8I=GFPPs=q9V=c$CEZx1h8yb zjw*EDjGk%HZgC_ppM;<1oiv-I8;vIWX4a*hVZa&v%FLwEXK0qu=ZCY5KI;o=X@9KX zDchin!Z{L?^wezCF?j|qIvXd;D9ShqeY~hv9=J*E0C9{-D)(aCrct(^``}$<<}VU{V~{Cdnv;_c`la*b(EUcxcmAWr&xdc(IiWIfl4~M>Z{-GQ^*U=CyK9WjBIY zHDF?LdR^vJz62qY64R?QWh_DK1Tmr=7NJyrk1xfrO^f8?yaM!EX(iHEC23a1u5s*%0Z=$SHkNXunz8aoFMG7lS!f~oUo}{KE;>ercI4R)o}Z*b6>O5 z{6(y=={ivj25lOVzvQ(@+4P8LImRra27kl~>?nazKY{Zu87mP~%}cRY>ESD}u+*YI zGGwgAL!0inVth5Gml?S@LN1lBL8VQFQ)2ujTr??xpsSD9--)9Z&A|hV^WFG) zLYkho4}VQaJ!u1I)^B^?N*7%LwWvnA#Hus@L?L^Jt(3^S8p-#tM(G0U$+*ofu+XF) zNgob$IXolm0sEUla!I+;vr@UVUN2p8p0UT`@zPP(G-(y)kon0f^?MbqS?-Za*RoTm zdh3rTc73#G-RKRyVeJSL%yyVLfKm;A+eNgGqPNbrQybob$r05{(G=A48S4MixRJEba%xiQq JEWX-Q^Dikeb0Po$ diff --git a/Lib/NetLib_Standard2/HaoYueNet.ClientNetworkNet.Standard2.dll b/Lib/NetLib_Standard2/HaoYueNet.ClientNetworkNet.Standard2.dll index c3c4a9054b8382903afa0146193f59e88d636096..b1390f14a0be2552f8008b02062184a90720bc65 100644 GIT binary patch delta 244 zcmZoz!Pu~ZaY6@+{n-bPH}+UdGcs>JA)TNhFth*ne}*%$?wxaRLQQ2(aBFCy> zU~FWZWM*iVW|Ewom}+5eWM+|?W@cn=Zjo$hZjq8=m||vNk(g#Yxz00W)U|D0JOd5kRg9TVD5va=)tk)1I OmIPFpy4gKoCo=#e2~Af3 diff --git a/NoSugarNet.ClientCore/Manager/AppLocalClient.cs b/NoSugarNet.ClientCore/Manager/AppLocalClient.cs index f7000c5..e319675 100644 --- a/NoSugarNet.ClientCore/Manager/AppLocalClient.cs +++ b/NoSugarNet.ClientCore/Manager/AppLocalClient.cs @@ -49,6 +49,24 @@ namespace ServerCore.Manager ClientUserCount = mDictTunnelID2Listeners.Count; } + public void GetClientDebugInfo() + { + AppNoSugarNet.log.Debug($"------------ mDictTunnelID2Listeners {mDictTunnelID2Listeners.Count} ------------"); + lock (mDictTunnelID2Listeners) + { + foreach (var item in mDictTunnelID2Listeners) + { + var cinfo = item.Value.GetDictIdx2LocalClientInfo(); + AppNoSugarNet.log.Debug($"----- TunnelID {item.Key} ObjcurrSeed->{item.Value.currSeed} ClientList->{item.Value.ClientList.Count} Idx2LocalClient->{cinfo.Count} -----"); + + foreach (var c in cinfo) + { + AppNoSugarNet.log.Debug($"----- Idx {c.Key} bRemoteConnect->{c.Value.bRemoteConnect} msgQueue.Count->{c.Value.msgQueue.Count} -----"); + } + } + } + } + /// /// 初始化连接,先获取到配置 /// @@ -114,10 +132,12 @@ namespace ServerCore.Manager for (int i = 0; i < keys.Length; i++) { LocalListener _listener = mDictTunnelID2Listeners[keys[i]]; - _listener.StopAll(); + _listener.StopAllLocalClient(); + _listener.Stop(); //_listener.Stop(); RemoveLocalListener(_listener); } + mDictTunnelID2Listeners.Clear(); } } #endregion @@ -266,7 +286,7 @@ namespace ServerCore.Manager /// public void OnClientTunnelDataCallBack(byte tunnelId,byte Idx, byte[] data) { - //AppNoSugarNet.log.Info($"OnClientTunnelDataCallBack {tunnelId},{Idx}"); + //AppNoSugarNet.log.Info($"OnClientTunnelDataCallBack {tunnelId},{Idx} data.Length->{data.Length}"); int SlienLenght = 1000; //判断数据量大时分包 diff --git a/NoSugarNet.ClientCore/Manager/AppLogin.cs b/NoSugarNet.ClientCore/Manager/AppLogin.cs index 73a013b..d1ad4de 100644 --- a/NoSugarNet.ClientCore/Manager/AppLogin.cs +++ b/NoSugarNet.ClientCore/Manager/AppLogin.cs @@ -6,16 +6,22 @@ namespace NoSugarNet.ClientCore.Manager { public class AppLogin { + static string LastLoginGuid = ""; public AppLogin() { NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdLogin, RecvLoginMsg); } - public void Login(string Account) + + public void Login() { + if(string.IsNullOrEmpty(LastLoginGuid)) + LastLoginGuid = Guid.NewGuid().ToString(); + + AppNoSugarNet.user.userdata.Account = LastLoginGuid; Protobuf_Login msg = new Protobuf_Login() { LoginType = 0, - Account = Account, + Account = AppNoSugarNet.user.userdata.Account, }; AppNoSugarNet.networkHelper.SendToServer((int)CommandID.CmdLogin, ProtoBufHelper.Serizlize(msg)); } diff --git a/NoSugarNet.ClientCore/Manager/LocalClient/LocalListener.cs b/NoSugarNet.ClientCore/Manager/LocalClient/LocalListener.cs index 5501e4d..247f6a7 100644 --- a/NoSugarNet.ClientCore/Manager/LocalClient/LocalListener.cs +++ b/NoSugarNet.ClientCore/Manager/LocalClient/LocalListener.cs @@ -8,6 +8,9 @@ namespace NoSugarNet.ClientCore public byte mTunnelID; public long mReciveAllLenght; public long mSendAllLenght; + public long currSeed; + static long Seed; + public LocalListener(int numConnections, int receiveBufferSize, byte TunnelID) : base(numConnections, receiveBufferSize) { @@ -17,12 +20,14 @@ namespace NoSugarNet.ClientCore OnNetLog += OnShowNetLog; mTunnelID = TunnelID; + + currSeed = Seed++; } private void ClientNumberChange(int num, AsyncUserToken token) { AppNoSugarNet.log.Info("Client数发生变化"); - //增加连接数 + //增加连接数stsc if (num > 0) { int Idx = AddDictSocket(token.Socket); @@ -79,9 +84,16 @@ namespace NoSugarNet.ClientCore public void CloseConnectByIdx(byte Idx) { - if (GetSocketByIdx(Idx, out LocalClientInfo _localClientInf)) + if (GetSocketByIdx(Idx, out LocalClientInfo _localClientInfo)) { - _localClientInf._socket.Shutdown(SocketShutdown.Both); + //把未发送消息队列回收了 + while (_localClientInfo.msgQueue.Count > 0) + { + IdxWithMsg msg = _localClientInfo.msgQueue.Dequeue(); + AppNoSugarNet.local._localMsgPool.Enqueue(msg); + } + + _localClientInfo._socket.Shutdown(SocketShutdown.Both); } } @@ -118,6 +130,11 @@ namespace NoSugarNet.ClientCore public Queue msgQueue = new Queue(); } + public Dictionary GetDictIdx2LocalClientInfo() + { + return DictIdx2LocalClientInfo; + } + int GetNextIdx() { if (FreeIdxs.Count > 0) @@ -129,6 +146,12 @@ namespace NoSugarNet.ClientCore return mSeedIdx++; } + void ResetFree() + { + FreeIdxs.Clear(); + mSeedIdx = 0; + } + /// /// 追加Socket返回下标 /// @@ -143,6 +166,7 @@ namespace NoSugarNet.ClientCore int Idx = GetNextIdx(); DictSocketHandle2Idx[socket.Handle] = Idx; DictIdx2LocalClientInfo[Idx] = new LocalClientInfo() { _socket = socket,bRemoteConnect = false}; + AppNoSugarNet.log.Debug($"AddDictSocket mTunnelID->{mTunnelID} Idx->{Idx} socket.Handle{socket.Handle}"); return Idx; } } @@ -160,6 +184,7 @@ namespace NoSugarNet.ClientCore if (DictIdx2LocalClientInfo.ContainsKey(Idx)) DictIdx2LocalClientInfo.Remove(Idx); DictSocketHandle2Idx.Remove(socket.Handle); + AppNoSugarNet.log.Debug($"RemoveDictSocket mTunnelID->{mTunnelID} Idx->{Idx} socket.Handle{socket.Handle}"); } } @@ -211,7 +236,7 @@ namespace NoSugarNet.ClientCore _localClientInfo.bRemoteConnect = bConnected; } - public void StopAll() + public void StopAllLocalClient() { lock (DictIdx2LocalClientInfo) { @@ -221,6 +246,14 @@ namespace NoSugarNet.ClientCore CloseConnectByIdx((byte)Idxs[i]); } DictIdx2LocalClientInfo.Clear(); + DictSocketHandle2Idx.Clear(); + ResetFree(); + + //清理事件 + OnClientNumberChange -= ClientNumberChange; + OnReceive -= ReceiveData; + OnDisconnected -= OnDisconnect; + OnNetLog -= OnShowNetLog; } } diff --git a/NoSugarNet.ClientCore/Manager/LocalClient/LocalListener_Source.cs b/NoSugarNet.ClientCore/Manager/LocalClient/LocalListener_Source.cs index 163b2c7..0e93238 100644 --- a/NoSugarNet.ClientCore/Manager/LocalClient/LocalListener_Source.cs +++ b/NoSugarNet.ClientCore/Manager/LocalClient/LocalListener_Source.cs @@ -1,290 +1,296 @@ -using HaoYueNet.ClientNetwork.OtherMode; -using HaoYueNet.ServerNetwork; -using System.Net.Sockets; +//using HaoYueNet.ClientNetwork.OtherMode; +//using HaoYueNet.ServerNetwork; +//using System.Net.Sockets; -namespace NoSugarNet.ClientCore -{ - public class LocalListener_Source : NetworkHelperCore_ListenerMode - { - public byte mTunnelID; - public long mReciveAllLenght; - public long mSendAllLenght; - public LocalListener_Source(int numConnections, int receiveBufferSize, byte TunnelID) - : base() - { - OnConnected += ClientNumberChange; - OnReceive += ReceiveData; - OnDisconnected += OnDisconnectClient; - OnNetLog += OnShowNetLog; +//namespace NoSugarNet.ClientCore +//{ +// public class LocalListener_Source : NetworkHelperCore_ListenerMode +// { +// public byte mTunnelID; +// public long mReciveAllLenght; +// public long mSendAllLenght; +// public LocalListener_Source(int numConnections, int receiveBufferSize, byte TunnelID) +// : base() +// { +// OnConnected += ClientNumberChange; +// OnReceive += ReceiveData; +// OnDisconnected += OnDisconnectClient; +// OnNetLog += OnShowNetLog; - mTunnelID = TunnelID; - } +// mTunnelID = TunnelID; +// } - private void ClientNumberChange(Socket socket) - { - AppNoSugarNet.log.Info("Client数发生变化"); - //增加连接数 - int Idx = AddDictSocket(socket); - if (GetSocketByIdx(Idx, out LocalClientInfo _localClientInf)) - { - AppNoSugarNet.local.OnClientLocalConnect(mTunnelID, (byte)Idx); - } - } +// private void ClientNumberChange(Socket socket) +// { +// AppNoSugarNet.log.Info("Client数发生变化"); +// //增加连接数 +// int Idx = AddDictSocket(socket); +// if (GetSocketByIdx(Idx, out LocalClientInfo _localClientInf)) +// { +// AppNoSugarNet.local.OnClientLocalConnect(mTunnelID, (byte)Idx); +// } +// } - /// - /// 通过下标发送 - /// - /// - /// - public void SendSocketByIdx(int Idx, byte[] data) - { - if (GetSocketByIdx(Idx, out LocalClientInfo _localClientInfo)) - { - mSendAllLenght += data.Length; - SendToClient(_localClientInfo._socket, data); - } - //TODO连接前缓存数据 - } +// /// +// /// 通过下标发送 +// /// +// /// +// /// +// public void SendSocketByIdx(int Idx, byte[] data) +// { +// if (GetSocketByIdx(Idx, out LocalClientInfo _localClientInfo)) +// { +// mSendAllLenght += data.Length; +// SendToClient(_localClientInfo._socket, data); +// } +// //TODO连接前缓存数据 +// } - /// - /// 接受包回调 - /// - /// 协议ID - /// 错误编号 - /// 业务数据 - private void ReceiveData(Socket sk, byte[] data) - { - DataCallBack(sk, data); - } +// /// +// /// 接受包回调 +// /// +// /// 协议ID +// /// 错误编号 +// /// 业务数据 +// private void ReceiveData(Socket sk, byte[] data) +// { +// DataCallBack(sk, data); +// } - public void DataCallBack(Socket sk, byte[] data) - { - //AppNoSugarNet.log.Info("收到消息 数据长度=>" + data.Length); - //记录接受长度 - mReciveAllLenght += data.Length; - if (!GetSocketIdxBySocket(sk, out int Idx)) - return; - try - { - if (GetMsgQueueByIdx(sk.Handle, out Queue _queue)) - { - lock (_queue) - { - _queue.Enqueue(data); - while (_queue.Count > 0) - { - AppNoSugarNet.local.OnClientTunnelDataCallBack(mTunnelID, (byte)Idx, _queue.Dequeue()); - } - } - } +// public void DataCallBack(Socket sk, byte[] data) +// { +// //AppNoSugarNet.log.Info("收到消息 数据长度=>" + data.Length); +// //记录接受长度 +// mReciveAllLenght += data.Length; +// if (!GetSocketIdxBySocket(sk, out int Idx)) +// return; +// try +// { +// if (GetMsgQueueByIdx(sk.Handle, out Queue _queue)) +// { +// lock (_queue) +// { +// _queue.Enqueue(data); +// while (_queue.Count > 0) +// { +// AppNoSugarNet.local.OnClientTunnelDataCallBack(mTunnelID, (byte)Idx, _queue.Dequeue()); +// } +// } +// } - ////抛出网络数据 - //AppNoSugarNet.local.OnClientTunnelDataCallBack(mTunnelID, (byte)Idx, data); - } - catch (Exception ex) - { - AppNoSugarNet.log.Info("逻辑处理错误:" + ex.ToString()); - } - } +// ////抛出网络数据 +// //AppNoSugarNet.local.OnClientTunnelDataCallBack(mTunnelID, (byte)Idx, data); +// } +// catch (Exception ex) +// { +// AppNoSugarNet.log.Info("逻辑处理错误:" + ex.ToString()); +// } +// } - public void CloseConnectByIdx(byte Idx) - { - if (GetSocketByIdx(Idx, out LocalClientInfo _localClientInf)) - { - _localClientInf._socket.Shutdown(SocketShutdown.Both); - } - } +// public void CloseConnectByIdx(byte Idx) +// { +// if (GetSocketByIdx(Idx, out LocalClientInfo _localClientInf)) +// { +// _localClientInf._socket.Shutdown(SocketShutdown.Both); +// } +// } - /// - /// 断开连接 - /// - /// - public void OnDisconnectClient(Socket sk) - { - AppNoSugarNet.log.Info("断开连接"); +// /// +// /// 断开连接 +// /// +// /// +// public void OnDisconnectClient(Socket sk) +// { +// AppNoSugarNet.log.Info("断开连接"); - if (!GetSocketIdxBySocket(sk, out int Idx)) - return; +// if (!GetSocketIdxBySocket(sk, out int Idx)) +// return; - AppNoSugarNet.local.OnClientLocalDisconnect(mTunnelID, (byte)Idx); - RemoveDictSocket(sk); - } +// AppNoSugarNet.local.OnClientLocalDisconnect(mTunnelID, (byte)Idx); +// RemoveDictSocket(sk); +// } - public void OnShowNetLog(string msg) - { - AppNoSugarNet.log.Info(msg); - } +// public void OnShowNetLog(string msg) +// { +// AppNoSugarNet.log.Info(msg); +// } - #region 一个轻量级无用户连接管理 - Dictionary DictSocketHandle2Idx = new Dictionary(); - Dictionary> DictSocketHandle2Msg = new Dictionary>(); - Dictionary DictIdx2LocalClientInfo = new Dictionary(); - int mSeedIdx = 0; - List FreeIdxs = new List(); - public class LocalClientInfo - { - public Socket _socket; - public bool bRemoteConnect; - public bool bLocalConnect => _socket.Connected; - public Queue msgQueue = new Queue(); - } +// #region 一个轻量级无用户连接管理 +// Dictionary DictSocketHandle2Idx = new Dictionary(); +// Dictionary> DictSocketHandle2Msg = new Dictionary>(); +// Dictionary DictIdx2LocalClientInfo = new Dictionary(); +// int mSeedIdx = 0; +// List FreeIdxs = new List(); +// public class LocalClientInfo +// { +// public Socket _socket; +// public bool bRemoteConnect; +// public bool bLocalConnect => _socket.Connected; +// public Queue msgQueue = new Queue(); +// } - int GetNextIdx() - { - if (FreeIdxs.Count > 0) - { - int Idx = FreeIdxs[0]; - FreeIdxs.RemoveAt(0); - return Idx; - } - return mSeedIdx++; - } +// int GetNextIdx() +// { +// if (FreeIdxs.Count > 0) +// { +// int Idx = FreeIdxs[0]; +// FreeIdxs.RemoveAt(0); +// return Idx; +// } +// return mSeedIdx++; +// } - /// - /// 追加Socket返回下标 - /// - /// - /// - public int AddDictSocket(Socket socket) - { - if (socket == null) - return -1; - lock (DictSocketHandle2Idx) - { - int Idx = GetNextIdx(); - DictSocketHandle2Idx[socket.Handle] = Idx; - DictIdx2LocalClientInfo[Idx] = new LocalClientInfo() { _socket = socket,bRemoteConnect = false}; - DictSocketHandle2Msg[socket.Handle] = new Queue(); - return Idx; - } - } +// /// +// /// 追加Socket返回下标 +// /// +// /// +// /// +// public int AddDictSocket(Socket socket) +// { +// if (socket == null) +// return -1; - public void RemoveDictSocket(Socket socket) - { - if (socket == null) - return; - lock (DictSocketHandle2Idx) - { - if (!DictSocketHandle2Idx.ContainsKey(socket.Handle)) - return; - int Idx = DictSocketHandle2Idx[socket.Handle]; - FreeIdxs.Add(Idx); - if (DictIdx2LocalClientInfo.ContainsKey(Idx)) - DictIdx2LocalClientInfo.Remove(Idx); +// lock (DictSocketHandle2Idx) +// { +// int Idx = GetNextIdx(); +// DictSocketHandle2Idx[socket.Handle] = Idx; +// DictIdx2LocalClientInfo[Idx] = new LocalClientInfo() { _socket = socket,bRemoteConnect = false}; +// DictSocketHandle2Msg[socket.Handle] = new Queue(); +// AppNoSugarNet.log.Debug($"AddDictSocket mTunnelID->{mTunnelID} Idx->{Idx} socket.Handle{socket.Handle}"); +// return Idx; +// } +// } + +// public void RemoveDictSocket(Socket socket) +// { +// if (socket == null) +// return; +// lock (DictSocketHandle2Idx) +// { +// if (!DictSocketHandle2Idx.ContainsKey(socket.Handle)) +// return; +// int Idx = DictSocketHandle2Idx[socket.Handle]; +// FreeIdxs.Add(Idx); +// if (DictIdx2LocalClientInfo.ContainsKey(Idx)) +// DictIdx2LocalClientInfo.Remove(Idx); - if (DictSocketHandle2Msg.ContainsKey(socket.Handle)) - DictSocketHandle2Msg.Remove(socket.Handle); +// if (DictSocketHandle2Msg.ContainsKey(socket.Handle)) +// DictSocketHandle2Msg.Remove(socket.Handle); - DictSocketHandle2Idx.Remove(socket.Handle); - } - } +// DictSocketHandle2Idx.Remove(socket.Handle); - bool GetSocketByIdx(int Idx, out LocalClientInfo _localClientInfo) - { - if (!DictIdx2LocalClientInfo.ContainsKey(Idx)) - { - _localClientInfo = null; - return false; - } +// AppNoSugarNet.log.Debug($"RemoveDictSocket mTunnelID->{mTunnelID} Idx->{Idx} socket.Handle{socket.Handle}"); +// } +// } - _localClientInfo = DictIdx2LocalClientInfo[Idx]; - return true; - } +// bool GetSocketByIdx(int Idx, out LocalClientInfo _localClientInfo) +// { +// if (!DictIdx2LocalClientInfo.ContainsKey(Idx)) +// { +// _localClientInfo = null; +// return false; +// } - bool GetMsgQueueByIdx(nint handle, out Queue _queue) - { - if (!DictSocketHandle2Msg.ContainsKey(handle)) - { - _queue = null; - return false; - } +// _localClientInfo = DictIdx2LocalClientInfo[Idx]; +// return true; +// } - _queue = DictSocketHandle2Msg[handle]; - return true; - } +// bool GetMsgQueueByIdx(nint handle, out Queue _queue) +// { +// if (!DictSocketHandle2Msg.ContainsKey(handle)) +// { +// _queue = null; +// return false; +// } - public bool GetSocketIdxBySocket(Socket _socket, out int Idx) - { - if (_socket == null) - { - Idx = -1; - return false; - } +// _queue = DictSocketHandle2Msg[handle]; +// return true; +// } - if (!DictSocketHandle2Idx.ContainsKey(_socket.Handle)) - { - Idx = -1; - return false; - } +// public bool GetSocketIdxBySocket(Socket _socket, out int Idx) +// { +// if (_socket == null) +// { +// Idx = -1; +// return false; +// } - Idx = DictSocketHandle2Idx[_socket.Handle]; - return true; - } +// if (!DictSocketHandle2Idx.ContainsKey(_socket.Handle)) +// { +// Idx = -1; +// return false; +// } - public bool CheckRemoteConnect(int Idx) - { - if (!GetSocketByIdx(Idx, out LocalClientInfo _localClientInfo)) - return false; - return _localClientInfo.bRemoteConnect; - } +// Idx = DictSocketHandle2Idx[_socket.Handle]; +// return true; +// } - public void SetRemoteConnectd(int Idx,bool bConnected) - { - if (!GetSocketByIdx(Idx, out LocalClientInfo _localClientInfo)) - return; - if (bConnected) - AppNoSugarNet.log.Info("远端本地连接已连接!!!!"); - else - AppNoSugarNet.log.Info("远端本地连接已断开连接!!!!"); - _localClientInfo.bRemoteConnect = bConnected; - } +// public bool CheckRemoteConnect(int Idx) +// { +// if (!GetSocketByIdx(Idx, out LocalClientInfo _localClientInfo)) +// return false; +// return _localClientInfo.bRemoteConnect; +// } - public void StopAll() - { - lock (DictIdx2LocalClientInfo) - { - int[] Idxs = DictIdx2LocalClientInfo.Keys.ToArray(); - for (int i = 0; i < Idxs.Length; i++) - { - CloseConnectByIdx((byte)Idxs[i]); - } - DictIdx2LocalClientInfo.Clear(); - } - } +// public void SetRemoteConnectd(int Idx,bool bConnected) +// { +// if (!GetSocketByIdx(Idx, out LocalClientInfo _localClientInfo)) +// return; +// if (bConnected) +// AppNoSugarNet.log.Info("远端本地连接已连接!!!!"); +// else +// AppNoSugarNet.log.Info("远端本地连接已断开连接!!!!"); +// _localClientInfo.bRemoteConnect = bConnected; +// } - #endregion +// public void StopAll() +// { +// lock (DictIdx2LocalClientInfo) +// { +// int[] Idxs = DictIdx2LocalClientInfo.Keys.ToArray(); +// for (int i = 0; i < Idxs.Length; i++) +// { +// CloseConnectByIdx((byte)Idxs[i]); +// } +// DictIdx2LocalClientInfo.Clear(); +// FreeIdxs.Clear(); +// mSeedIdx = 0; +// } +// } + +// #endregion - #region 缓存 - public void EnqueueIdxWithMsg(byte Idx, byte[] data) - { - if (!GetSocketByIdx(Idx, out LocalClientInfo _localClientInfo)) - return; +// #region 缓存 +// public void EnqueueIdxWithMsg(byte Idx, byte[] data) +// { +// if (!GetSocketByIdx(Idx, out LocalClientInfo _localClientInfo)) +// return; - IdxWithMsg Msg = AppNoSugarNet.local._localMsgPool.Dequeue(); - Msg.Idx = Idx; - Msg.data = data; - _localClientInfo.msgQueue.Enqueue(Msg); - } - public bool GetDictMsgQueue(byte Idx,out List MsgList) - { - if (!GetSocketByIdx(Idx, out LocalClientInfo _localClientInfo) || _localClientInfo.msgQueue.Count < 1) - { - MsgList = null; - return false; - } +// IdxWithMsg Msg = AppNoSugarNet.local._localMsgPool.Dequeue(); +// Msg.Idx = Idx; +// Msg.data = data; +// _localClientInfo.msgQueue.Enqueue(Msg); +// } +// public bool GetDictMsgQueue(byte Idx,out List MsgList) +// { +// if (!GetSocketByIdx(Idx, out LocalClientInfo _localClientInfo) || _localClientInfo.msgQueue.Count < 1) +// { +// MsgList = null; +// return false; +// } - MsgList = new List(); - lock (_localClientInfo.msgQueue) - { - while (_localClientInfo.msgQueue.Count > 0) - { - IdxWithMsg msg = _localClientInfo.msgQueue.Dequeue(); - MsgList.Add(msg); - } - return true; - } - } - #endregion - } -} +// MsgList = new List(); +// lock (_localClientInfo.msgQueue) +// { +// while (_localClientInfo.msgQueue.Count > 0) +// { +// IdxWithMsg msg = _localClientInfo.msgQueue.Dequeue(); +// MsgList.Add(msg); +// } +// return true; +// } +// } +// #endregion +// } +//} diff --git a/NoSugarNet.ClientCore/Manager/UserDataManager.cs b/NoSugarNet.ClientCore/Manager/UserDataManager.cs index 553ec82..050452a 100644 --- a/NoSugarNet.ClientCore/Manager/UserDataManager.cs +++ b/NoSugarNet.ClientCore/Manager/UserDataManager.cs @@ -49,7 +49,7 @@ namespace NoSugarNet.ClientCore.Manager //如果之前已登录,则重新登录 if (userdata.IsLoggedIn) { - AppNoSugarNet.login.Login(userdata.Account); + AppNoSugarNet.login.Login(); } } } diff --git a/NoSugarNet.ClientCore/Network/NetworkHelper.cs b/NoSugarNet.ClientCore/Network/NetworkHelper.cs index 430c587..df64c5c 100644 --- a/NoSugarNet.ClientCore/Network/NetworkHelper.cs +++ b/NoSugarNet.ClientCore/Network/NetworkHelper.cs @@ -33,7 +33,7 @@ namespace NoSugarNet.ClientCore.Network /// /// 是否自动重连 /// - public bool bAutoReConnect = false; + public bool bAutoReConnect = true; /// /// 重连尝试时间 /// @@ -44,12 +44,21 @@ namespace NoSugarNet.ClientCore.Network NetworkDeBugLog($"NetworkConnected:{IsConnect}"); if (IsConnect) { - AppNoSugarNet.login.Login(Guid.NewGuid().ToString()); + //从未登录过 + if (!AppNoSugarNet.user.IsLoggedIn) + { + //首次登录 + AppNoSugarNet.login.Login(); + } } else { //连接失败 NetworkDeBugLog("连接失败!"); + + //停止所有 + AppNoSugarNet.local.StopAll(); + //自动重连开关 if (bAutoReConnect) ReConnect(); diff --git a/NoSugarNet.ClientCore/Properties/PublishProfiles/FolderProfile.pubxml.user b/NoSugarNet.ClientCore/Properties/PublishProfiles/FolderProfile.pubxml.user index be64a25..95f96cb 100644 --- a/NoSugarNet.ClientCore/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/NoSugarNet.ClientCore/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -4,7 +4,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. --> - True|2024-01-23T08:25:49.0876201Z; + True|2024-04-23T09:15:55.5521754Z;True|2024-01-23T16:25:49.0876201+08:00; \ No newline at end of file diff --git a/NoSugarNet.ServerCore/Properties/PublishProfiles/FolderProfile.pubxml.user b/NoSugarNet.ServerCore/Properties/PublishProfiles/FolderProfile.pubxml.user index 8aebd5c..55d7f13 100644 --- a/NoSugarNet.ServerCore/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/NoSugarNet.ServerCore/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -4,7 +4,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. --> - True|2024-01-25T09:08:35.3176032Z; + True|2024-04-23T09:13:21.9642037Z;True|2024-04-23T17:02:04.8137007+08:00;True|2024-01-25T17:08:35.3176032+08:00; \ No newline at end of file diff --git a/Sample/NoSugarNet.ClientCli/NoSugarNet.ClientCli.csproj.user b/Sample/NoSugarNet.ClientCli/NoSugarNet.ClientCli.csproj.user index 2241f9c..6d2fdd4 100644 --- a/Sample/NoSugarNet.ClientCli/NoSugarNet.ClientCli.csproj.user +++ b/Sample/NoSugarNet.ClientCli/NoSugarNet.ClientCli.csproj.user @@ -1,6 +1,6 @@  - <_LastSelectedProfileId>D:\NoSugarNet\Sample\NoSugarNet.ClientCli\Properties\PublishProfiles\FolderProfile.pubxml + <_LastSelectedProfileId>F:\Sin365\NoSugarNet\Sample\NoSugarNet.ClientCli\Properties\PublishProfiles\FolderProfile.pubxml \ No newline at end of file diff --git a/Sample/NoSugarNet.ClientCli/Program.cs b/Sample/NoSugarNet.ClientCli/Program.cs index 1f72b17..68d698d 100644 --- a/Sample/NoSugarNet.ClientCli/Program.cs +++ b/Sample/NoSugarNet.ClientCli/Program.cs @@ -27,6 +27,12 @@ namespace NoSugarNet.ClientCli case "con": AppNoSugarNet.Connect(Config.ServerIP, Config.ServerPort); break; + case "tlist": + AppNoSugarNet.local.GetClientCount(out int ClientUserCount, out int TunnelCount); + Console.WriteLine($"GetClientCount->{ClientUserCount} TunnelCount->{TunnelCount}"); + + AppNoSugarNet.local.GetClientDebugInfo(); + break; case "stop": AppNoSugarNet.Close(); break; diff --git a/Sample/NoSugarNet.ClientCli/Properties/PublishProfiles/FolderProfile.pubxml b/Sample/NoSugarNet.ClientCli/Properties/PublishProfiles/FolderProfile.pubxml index 7d6298f..d37ba18 100644 --- a/Sample/NoSugarNet.ClientCli/Properties/PublishProfiles/FolderProfile.pubxml +++ b/Sample/NoSugarNet.ClientCli/Properties/PublishProfiles/FolderProfile.pubxml @@ -6,12 +6,13 @@ https://go.microsoft.com/fwlink/?LinkID=208121. Release Any CPU - bin\Release\net8.0\publish\linux-x64\ + bin\Release\net8.0\publish\win-x64\ FileSystem <_TargetId>Folder net8.0 - linux-x64 + win-x64 false false + false \ No newline at end of file diff --git a/Sample/NoSugarNet.ClientCli/Properties/PublishProfiles/FolderProfile.pubxml.user b/Sample/NoSugarNet.ClientCli/Properties/PublishProfiles/FolderProfile.pubxml.user index 535e1dd..6a16d09 100644 --- a/Sample/NoSugarNet.ClientCli/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/Sample/NoSugarNet.ClientCli/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -4,7 +4,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. --> - True|2024-04-14T14:24:49.2846754Z;True|2024-01-23T16:35:06.3918472+08:00;True|2024-01-23T16:34:52.0595483+08:00;True|2024-01-23T16:27:36.4850749+08:00;True|2024-01-23T16:27:04.0721589+08:00; + True|2024-06-18T04:59:35.6257454Z;True|2024-06-18T10:27:07.8233386+08:00;True|2024-06-17T15:05:24.3158316+08:00;True|2024-05-20T18:14:09.8394409+08:00;True|2024-05-20T18:13:33.8442145+08:00;True|2024-05-20T18:01:49.3220793+08:00;True|2024-05-20T18:01:28.3681468+08:00;True|2024-04-14T22:24:49.2846754+08:00;True|2024-01-23T16:35:06.3918472+08:00;True|2024-01-23T16:34:52.0595483+08:00;True|2024-01-23T16:27:36.4850749+08:00;True|2024-01-23T16:27:04.0721589+08:00; \ No newline at end of file diff --git a/Sample/NoSugarNet.ServerCli/Properties/PublishProfiles/FolderProfile.pubxml.user b/Sample/NoSugarNet.ServerCli/Properties/PublishProfiles/FolderProfile.pubxml.user index bc9d86e..4195f51 100644 --- a/Sample/NoSugarNet.ServerCli/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/Sample/NoSugarNet.ServerCli/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -4,7 +4,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. --> - True|2024-04-15T07:24:50.3598281Z;True|2024-04-15T15:24:34.0374231+08:00;True|2024-01-25T17:09:07.9161603+08:00;True|2024-01-23T18:28:01.1220581+08:00;True|2024-01-23T16:36:21.1141328+08:00; + True|2024-06-18T03:37:53.3986849Z;True|2024-06-18T11:21:56.8035265+08:00;True|2024-06-18T11:21:19.5434721+08:00;True|2024-06-18T11:21:01.1589956+08:00;True|2024-06-18T11:13:38.3624463+08:00;True|2024-06-18T11:10:28.0508856+08:00;True|2024-06-18T10:39:23.0033920+08:00;True|2024-06-18T10:28:08.9658896+08:00;True|2024-06-17T14:46:33.2307641+08:00;True|2024-05-20T17:56:34.6581491+08:00;True|2024-04-23T17:02:36.4793408+08:00;True|2024-04-15T15:24:50.3598281+08:00;True|2024-04-15T15:24:34.0374231+08:00;True|2024-01-25T17:09:07.9161603+08:00;True|2024-01-23T18:28:01.1220581+08:00;True|2024-01-23T16:36:21.1141328+08:00; \ No newline at end of file