diff --git a/FunGame.Core/FunGame.Core.csproj b/FunGame.Core/FunGame.Core.csproj
index 9bca00e..64b1b7d 100644
--- a/FunGame.Core/FunGame.Core.csproj
+++ b/FunGame.Core/FunGame.Core.csproj
@@ -22,6 +22,10 @@
embedded
+
+
+
+
..\..\FunGame\bin\Debug\net6.0\FunGame.Core.Api.dll
diff --git a/FunGameServer/FunGameServer.csproj b/FunGameServer/FunGameServer.csproj
index cedf90b..8799b1e 100644
--- a/FunGameServer/FunGameServer.csproj
+++ b/FunGameServer/FunGameServer.csproj
@@ -28,6 +28,10 @@
+
+
+
+
..\..\FunGame\bin\Debug\net6.0\FunGame.Core.Api.dll
diff --git a/FunGameServer/Main.cs b/FunGameServer/Main.cs
index 7d12411..8723c6d 100644
--- a/FunGameServer/Main.cs
+++ b/FunGameServer/Main.cs
@@ -17,10 +17,17 @@ int port = Config.SERVER_PORT;
Console.Title = Config.CONSOLE_TITLE;
-try
+Task t = Task.Factory.StartNew(() =>
{
- Task t = Task.Factory.StartNew(() =>
+ try
{
+ // 连接MySQL服务器
+ if (!Config.DefaultDataHelper.Connect())
+ {
+ Running = false;
+ throw new Exception("服务器遇到问题需要关闭,请重新启动服务器!");
+ }
+
// 创建IP地址终结点对象
IPEndPoint ip = new(IPAddress.Any, port);
@@ -30,15 +37,15 @@ try
// 开始监听连接
ServerSocket.Listen(Config.MAX_PLAYERS);
- ServerHelper.WriteLine("服务器启动成功,正在监听 . . .");
+ ServerHelper.WriteLine("服务器启动成功,端口号 " + port + " ,开始监听 . . .");
Task.Run(() =>
{
Config.ServerNotice = ServerHelper.GetServerNotice();
if (Config.ServerNotice != "")
- ServerHelper.WriteLine("\n\n" + Config.ServerNotice + "\n\n");
+ ServerHelper.WriteLine("\n**********服务器公告**********\n" + Config.ServerNotice + "\n\n");
else
- ServerHelper.WriteLine("无法读取服务器公告。");
+ ServerHelper.WriteLine("无法读取服务器公告");
});
while (Running)
@@ -59,43 +66,52 @@ try
});
else
if (clientIP != null)
- ServerHelper.WriteLine("客户端" + clientIP.ToString() + "连接失败。");
- else
+ ServerHelper.WriteLine("客户端" + clientIP.ToString() + "连接失败。");
+ else
ServerHelper.WriteLine("客户端连接失败。");
}
catch (Exception e)
{
- ServerHelper.WriteLine("ERROR: 客户端断开连接!\n" + e.StackTrace);
+ ServerHelper.WriteLine("客户端断开连接!\n" + e.StackTrace);
}
}
-
- });
-}
-catch (Exception e)
-{
- ServerHelper.WriteLine(e.StackTrace);
- if (ServerSocket != null)
- {
- ServerSocket.Close();
- ServerSocket = null;
}
-}
-finally
-{
- while (Running)
+ catch (Exception e)
{
- string? order = "";
- order = Console.ReadLine();
- ServerHelper.Type();
- if (order != null && !order.Equals(""))
+ if (e.Message.Equals("服务器遇到问题需要关闭,请重新启动服务器!"))
{
- switch (order)
+ if (ServerSocket != null)
{
- case "quit":
- Running = false;
- break;
+ ServerSocket.Close();
+ ServerSocket = null;
}
}
+ ServerHelper.Error(e);
+ }
+ finally
+ {
+ if (ServerSocket != null)
+ {
+ ServerSocket.Close();
+ ServerSocket = null;
+ }
+ }
+
+});
+
+while (Running)
+{
+ string? order = "";
+ order = Console.ReadLine();
+ ServerHelper.Type();
+ if (order != null && !order.Equals("") && Running)
+ {
+ switch (order)
+ {
+ case "quit":
+ Running = false;
+ break;
+ }
}
}
diff --git a/FunGameServer/Models/Config/Config.cs b/FunGameServer/Models/Config/Config.cs
index 3166bba..210bc15 100644
--- a/FunGameServer/Models/Config/Config.cs
+++ b/FunGameServer/Models/Config/Config.cs
@@ -1,4 +1,5 @@
using FunGame.Core.Api.Util;
+using FunGameServer.Utils;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
@@ -23,6 +24,7 @@ namespace FunGameServer.Models.Config
public static string ServerNotice = ""; // 服务器的公告
public static AssemblyHelper DefaultAssemblyHelper = new AssemblyHelper();
+ public static DataHelper DefaultDataHelper = new DataHelper();
///
/// string: 玩家标识ID
diff --git a/FunGameServer/Sockets/ClientSocket.cs b/FunGameServer/Sockets/ClientSocket.cs
index b198cb1..886da67 100644
--- a/FunGameServer/Sockets/ClientSocket.cs
+++ b/FunGameServer/Sockets/ClientSocket.cs
@@ -43,7 +43,7 @@ namespace FunGameServer.Sockets
int type = SocketHelper.GetType(msg);
string typestring = SocketHelper.GetTypeString(type);
msg = SocketHelper.GetMessage(msg);
- ServerHelper.WriteLine("[ 客户端(" + typestring + ")] -> " + msg);
+ if (type != (int)SocketEnums.Type.HeartBeat) ServerHelper.WriteLine("[ 客户端(" + typestring + ")] -> " + msg);
switch (type)
{
case (int)SocketEnums.Type.GetNotice:
@@ -64,7 +64,7 @@ namespace FunGameServer.Sockets
}
catch (Exception e)
{
- ServerHelper.WriteLine("ERROR:客户端没有回应。\n" + e.StackTrace);
+ ServerHelper.WriteLine("客户端没有回应。\n" + e.StackTrace);
return false;
}
}
@@ -87,7 +87,7 @@ namespace FunGameServer.Sockets
}
catch (Exception e)
{
- ServerHelper.WriteLine("ERROR:客户端没有回应。" + e.StackTrace);
+ ServerHelper.WriteLine("客户端没有回应。" + e.StackTrace);
return false;
}
}
@@ -113,8 +113,8 @@ namespace FunGameServer.Sockets
FailedTimes++;
if (FailedTimes >= Config.MAX_CONNECTFAILED)
{
- ServerHelper.WriteLine("ERROR: Too Many Faileds.");
- ServerHelper.WriteLine("CLOSE: StreamReader is Closed.");
+ ServerHelper.WriteLine("ERROR -> Too Many Faileds.");
+ ServerHelper.WriteLine("CLOSE -> StreamReader is Closed.");
break;
}
}
@@ -122,8 +122,8 @@ namespace FunGameServer.Sockets
}
else
{
- ServerHelper.WriteLine("ERROR: Socket is Closed.");
- ServerHelper.WriteLine("CLOSE: StringStream is Closed.");
+ ServerHelper.WriteLine("ERROR -> Socket is Closed.");
+ ServerHelper.WriteLine("CLOSE -> StringStream is Closed.");
break;
}
}
diff --git a/FunGameServer/Utils/DataHelper.cs b/FunGameServer/Utils/DataHelper.cs
new file mode 100644
index 0000000..57d57f2
--- /dev/null
+++ b/FunGameServer/Utils/DataHelper.cs
@@ -0,0 +1,55 @@
+using FunGame.Core.Api.Model.Entity;
+using FunGameServer.Models.Config;
+using MySql.Data.MySqlClient;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using static FunGame.Core.Api.Model.Enum.CommonEnums;
+
+namespace FunGameServer.Utils
+{
+ public class DataHelper
+ {
+ private string? GetConnection = "";
+ private MySqlConnection? msc = null;
+
+ public DataHelper()
+ {
+
+ }
+
+ public bool Connect()
+ {
+ try
+ {
+ GetConnection = (string?)Config.DefaultAssemblyHelper.GetFunGameCoreValue((int)InterfaceType.ServerInterface, (int)InterfaceMethod.DBConnection);
+ if (GetConnection != null)
+ {
+ string[] DataSetting = GetConnection.Split(";");
+ if (DataSetting.Length > 1 && DataSetting[0].Length > 14 && DataSetting[1].Length > 8)
+ {
+ ServerHelper.WriteLine("Connecting: " + DataSetting[0][14..] + ":" + DataSetting[1][8..]);
+ }
+ msc = new MySqlConnection(GetConnection);
+ msc.Open();
+ if (msc.State == System.Data.ConnectionState.Open)
+ {
+ ServerHelper.WriteLine("Connected: MySQL服务器连接成功");
+ return true;
+ }
+ }
+ else
+ {
+ throw new Exception("MySQL服务启动失败:无法找到MySQL配置文件。");
+ }
+ }
+ catch (Exception e)
+ {
+ ServerHelper.Error(e);
+ }
+ return false;
+ }
+ }
+}
diff --git a/FunGameServer/Utils/ServerHelper.cs b/FunGameServer/Utils/ServerHelper.cs
index 95f9667..9421f95 100644
--- a/FunGameServer/Utils/ServerHelper.cs
+++ b/FunGameServer/Utils/ServerHelper.cs
@@ -16,6 +16,11 @@ namespace FunGameServer.Utils
return now.AddMilliseconds(-now.Millisecond).ToString() + " " + Config.SERVER_NAME + ":";
}
+ public static void Error(Exception e)
+ {
+ Console.Write("\r" + GetPrefix() + e.Message + "\n" + e.StackTrace + "\n\r> ");
+ }
+
public static void WriteLine(string? msg)
{
Console.Write("\r" + GetPrefix() + msg + "\n\r> ");
@@ -30,9 +35,7 @@ namespace FunGameServer.Utils
{
try
{
- string? ServerNotice = (string?)Config.DefaultAssemblyHelper.GetFunGameCoreValue((int)InterfaceType.ServerInterface, (int)InterfaceMethod.ServerNotice);
- if (ServerNotice != null)
- return ServerNotice;
+
}
catch (Exception e)
{