Browse Source

试图改进服务端连接的稳定性以及重连能力.

王刚 3 years ago
parent
commit
9bfaf7a706

+ 1 - 1
CSserver/BattleRoom/Program.cs

@@ -43,7 +43,7 @@ namespace BattleRoom
                 Debug.WriteLine(ee.Message);
             }
             RoomManager.Instance.ServerPeer = new ServerPeer(client);                    // 给管理器的服务器间socket赋值
-
+            RoomManager.Instance.ServerPeer.OnSocketDisconnected += () => { InitServerPeer(); };
         }
 
         static void selfTest()

+ 6 - 1
CSserver/BattleRoom/server/ServerPeer.cs

@@ -18,6 +18,7 @@ namespace BattleRoom
         /// socket连接
         /// </summary>
         public readonly Socket Sock;
+
         public Action OnSocketDisconnected;
         /// <summary>
         /// 消息分发
@@ -37,7 +38,11 @@ namespace BattleRoom
             var t = Task.Run(() => recv(Sock));                                 // 新建接收线程 
             var tcs = Task.Run(WriteToClient);                                  // 向客户端发送消息线程
             var tmsglp = Task.Run(MsgLoop);
-            OnSocketDisconnected = () => { Console.WriteLine("socket连接已断开!"); };
+            OnSocketDisconnected += () => { 
+                Console.WriteLine("socket连接已断开!"); 
+                sock.Close();
+                sock = null;
+            };
         }
 
         #region 逻辑处理

+ 3 - 0
CSserver/MultiDup/Program.cs

@@ -92,6 +92,9 @@ namespace MultiDup
                     break;
                 }
                 Console.WriteLine("server peer 连接上来了.");
+                if (null != serverPeer) { 
+                    serverPeer.Close();
+                }
                 serverPeer = new ServerPeer(connection);                                 // 建立与服务端的连接
             }
             SocketWatch.Close();                                                         // 结束监听socket

+ 5 - 1
CSserver/MultiDup/server/ServerPeer.cs

@@ -37,7 +37,11 @@ namespace MultiDup
             var t = Task.Run(() => recv(Sock));                                 // 新建接收线程 
             var tcs = Task.Run(WriteToClient);                                  // 向客户端发送消息线程
             var tmsglp = Task.Run(MsgLoop);
-            OnSocketDisconnected = () => { Console.WriteLine("socket连接已断开!"); };
+            OnSocketDisconnected += () => {
+                Console.WriteLine("socket连接已断开!"); 
+                sock.Close();
+                sock = null;
+            };
         }
 
         #region 逻辑处理