diff --git a/FunGame.Core/FunGame.Core.csproj b/FunGame.Implement/FunGame.Implement.csproj
similarity index 93%
rename from FunGame.Core/FunGame.Core.csproj
rename to FunGame.Implement/FunGame.Implement.csproj
index 32a2dab..87abf96 100644
--- a/FunGame.Core/FunGame.Core.csproj
+++ b/FunGame.Implement/FunGame.Implement.csproj
@@ -23,8 +23,8 @@
-
- ..\..\FunGame\bin\Server\Debug\net6.0\FunGame.Core.Api.dll
+
+ ..\..\FunGame\bin\Server\Debug\net6.0\FunGame.Core.dll
diff --git a/FunGame.Implement/Implement/ServerInterfaceImpl.cs b/FunGame.Implement/Implement/ServerInterfaceImpl.cs
new file mode 100644
index 0000000..169df23
--- /dev/null
+++ b/FunGame.Implement/Implement/ServerInterfaceImpl.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Milimoe.FunGame.Core.Interface;
+
+namespace MIilimoe.FunGame.Core.Implement
+{
+ public class IServerImpl : IServer
+ {
+
+ }
+}
diff --git a/FunGameServer/FunGameServer.csproj b/FunGame.Server/FunGame.Server.csproj
similarity index 83%
rename from FunGameServer/FunGameServer.csproj
rename to FunGame.Server/FunGame.Server.csproj
index 2365b79..f2484e8 100644
--- a/FunGameServer/FunGameServer.csproj
+++ b/FunGame.Server/FunGame.Server.csproj
@@ -5,7 +5,7 @@
net6.0
enable
enable
- logo.ico
+ Images\logo.ico
logo.ico
C:\milimoe\FunGame\bin\Server
FunGameServer
@@ -14,6 +14,7 @@
C:\milimoe\FunGame\bin
1.0
1.0
+ FunGameServer
@@ -25,12 +26,12 @@
-
+
-
- ..\..\FunGame\bin\Server\Debug\net6.0\FunGame.Core.Api.dll
+
+ ..\..\FunGame\bin\Server\Debug\net6.0\FunGame.Core.dll
..\..\FunGame\bin\Server\Debug\net6.0\MySql.Data.dll
@@ -44,10 +45,14 @@
-
+
True
\
+
+
+
+
diff --git a/FunGameServer/logo.ico b/FunGame.Server/Images/logo.ico
similarity index 100%
rename from FunGameServer/logo.ico
rename to FunGame.Server/Images/logo.ico
diff --git a/FunGameServer/ServerCore/Main.cs b/FunGame.Server/Main.cs
similarity index 83%
rename from FunGameServer/ServerCore/Main.cs
rename to FunGame.Server/Main.cs
index fc76b78..b1636a6 100644
--- a/FunGameServer/ServerCore/Main.cs
+++ b/FunGame.Server/Main.cs
@@ -4,11 +4,11 @@ using System.Text;
using System.Text.RegularExpressions;
using System;
using System.Net.WebSockets;
-using FunGameServer.Models.Config;
-using FunGameServer.Utils;
-using FunGame.Core.Api.Model.Enum;
-using FunGame.Core.Api.Util;
-using FunGameServer.ServerCore;
+using Milimoe.FunGame.Server.Others;
+using Milimoe.FunGame.Server.Utility;
+using Milimoe.FunGame.Core.Entity.Enum;
+using Milimoe.FunGame.Core.Api.Utility;
+using FunGame.Server.Model;
Console.Title = Config.SERVER_NAME;
Console.WriteLine(FunGameEnums.GetInfo(Config.FunGameType));
@@ -105,27 +105,30 @@ void StartServer()
while (Running)
{
Socket socket;
+ string clientIPaddress = "";
try
{
socket = ServerSocket.Accept();
IPEndPoint? clientIP = (IPEndPoint?)socket.RemoteEndPoint;
- string clientIPaddress = (clientIP != null) ? clientIP.ToString() : "Unknown";
+ clientIPaddress = (clientIP != null) ? clientIP.ToString() : "Unknown";
ServerHelper.WriteLine("客户端" + clientIPaddress + "连接 . . .");
- if (Read(socket) && Send(socket))
+ if (Read(socket, clientIPaddress) && Send(socket, clientIPaddress))
{
- ClientSocket cs = new ClientSocket(socket, Running);
+ ClientSocket cs = new(socket, Running);
Task t = Task.Factory.StartNew(() =>
{
cs.Start();
});
cs.Task = t;
+ cs.ClientName = clientIPaddress;
+ Config.OnlineClients.Add(clientIPaddress, clientIPaddress);
}
else
ServerHelper.WriteLine("客户端" + clientIPaddress + "连接失败。");
}
- catch (Exception e)
+ catch
{
- ServerHelper.WriteLine("客户端断开连接!\n" + e.StackTrace);
+ ServerHelper.WriteLine("客户端" + clientIPaddress + "断开连接!");
}
}
}
@@ -153,7 +156,7 @@ void StartServer()
});
}
-bool Read(Socket socket)
+bool Read(Socket socket, string name)
{
// 接收客户端消息
byte[] buffer = new byte[2048];
@@ -165,18 +168,18 @@ bool Read(Socket socket)
msg = SocketHelper.GetMessage(msg);
if (typestring != SocketMessageType.Unknown.ToString())
{
- ServerHelper.WriteLine("[ 客户端(" + typestring + ")] -> " + msg);
+ ServerHelper.WriteLine("[" + typestring + "] " + SocketHelper.MakeClientName(name) + " -> " + msg);
return true;
}
ServerHelper.WriteLine("客户端发送了不符合FunGame规定的字符,拒绝连接。");
return false;
}
else
- ServerHelper.WriteLine("客户端没有回应。");
+ ServerHelper.WriteLine(SocketHelper.MakeClientName(name) + " 没有回应。");
return false;
}
-bool Send(Socket socket)
+bool Send(Socket socket, string name)
{
// 发送消息给客户端
string msg = Config.SERVER_NAME + ";" + Config.SERVER_NOTICE;
@@ -184,7 +187,7 @@ bool Send(Socket socket)
buffer = Config.DEFAULT_ENCODING.GetBytes(SocketHelper.MakeMessage((int)SocketMessageType.GetNotice, msg));
if (socket.Send(buffer) > 0)
{
- ServerHelper.WriteLine("[ 客户端 ] <- " + "已确认连接");
+ ServerHelper.WriteLine(SocketHelper.MakeClientName(name) + " <- " + "已确认连接");
return true;
}
else
diff --git a/FunGameServer/ServerCore/ClientSocket.cs b/FunGame.Server/Model/ClientSocket.cs
similarity index 78%
rename from FunGameServer/ServerCore/ClientSocket.cs
rename to FunGame.Server/Model/ClientSocket.cs
index 0f70221..32f39dd 100644
--- a/FunGameServer/ServerCore/ClientSocket.cs
+++ b/FunGame.Server/Model/ClientSocket.cs
@@ -1,5 +1,4 @@
-using FunGameServer.Models.Config;
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
@@ -7,22 +6,30 @@ using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlTypes;
-using FunGameServer.Utils;
using System.Reflection.Metadata;
-using FunGame.Core.Api.Model.Entity;
using System.Net;
-using FunGame.Core.Api.Model.Enum;
-using FunGame.Core.Api.Util;
using MySqlX.XDevAPI.Common;
+using Milimoe.FunGame.Server.Utility;
+using Milimoe.FunGame.Core.Entity.General;
+using Milimoe.FunGame.Core.Entity.Enum;
+using Milimoe.FunGame.Core.Api.Utility;
+using Milimoe.FunGame.Server.Others;
-namespace FunGameServer.ServerCore
+namespace FunGame.Server.Model
{
public class ClientSocket
{
- public bool Running { get; set; } = false;
- public Socket? Socket { get; set; } = null;
+ /**
+ * Public
+ */
+ public bool Running = false;
+ public Socket? Socket = null;
public Task? Task = null;
+ public string ClientName = "";
+ /**
+ * Private
+ */
private User? User = null;
public ClientSocket(Socket socket, bool running)
@@ -46,7 +53,7 @@ namespace FunGameServer.ServerCore
int type = SocketHelper.GetType(msg);
string typestring = EnumHelper.GetSocketTypeName(type);
msg = SocketHelper.GetMessage(msg);
- if (type != (int)SocketMessageType.HeartBeat) ServerHelper.WriteLine("[ 客户端(" + typestring + ")] -> " + msg);
+ if (type != (int)SocketMessageType.HeartBeat) ServerHelper.WriteLine("[" + typestring + "] " + SocketHelper.MakeClientName(ClientName, User) + " -> " + msg);
switch (type)
{
case (int)SocketMessageType.GetNotice:
@@ -79,9 +86,9 @@ namespace FunGameServer.ServerCore
}
throw new Exception();
}
- catch (Exception e)
+ catch
{
- ServerHelper.WriteLine("客户端没有回应。\n" + e.StackTrace);
+ ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " 没有回应。");
return false;
}
}
@@ -97,14 +104,14 @@ namespace FunGameServer.ServerCore
if (socket.Send(buffer) > 0)
{
if (msg != "")
- ServerHelper.WriteLine("[ 客户端(" + typestring + ")] <- " + msg);
+ ServerHelper.WriteLine("[" + typestring + "] " + SocketHelper.MakeClientName(ClientName, User) + " <- " + msg);
return true;
}
throw new Exception();
}
- catch (Exception e)
+ catch
{
- ServerHelper.WriteLine("客户端没有回应。" + e.StackTrace);
+ ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " 没有回应。");
return false;
}
}
@@ -170,7 +177,7 @@ namespace FunGameServer.ServerCore
private void CreateStreamReader()
{
Thread.Sleep(100);
- ServerHelper.WriteLine("Creating: StreamReader...OK");
+ ServerHelper.WriteLine("Creating: StreamReader -> " + SocketHelper.MakeClientName(ClientName, User) + " ...OK");
while (Running)
{
if (Socket != null)
@@ -182,8 +189,8 @@ namespace FunGameServer.ServerCore
{
RemoveUser();
GetUserCount();
- ServerHelper.WriteLine("ERROR -> Too Many Faileds.");
- ServerHelper.WriteLine("CLOSE -> StreamReader is Closed.");
+ ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " ERROR -> Too Many Faileds.");
+ ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " CLOSE -> StreamReader is Closed.");
break;
}
}
@@ -193,34 +200,11 @@ namespace FunGameServer.ServerCore
{
RemoveUser();
GetUserCount();
- ServerHelper.WriteLine("ERROR -> Socket is Closed.");
- ServerHelper.WriteLine("CLOSE -> StringStream is Closed.");
+ ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " ERROR -> Socket is Closed.");
+ ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " CLOSE -> StringStream is Closed.");
break;
}
}
}
}
-
- public class SocketHelper
- {
- public static int GetType(string msg)
- {
- int index = msg.IndexOf(';') - 1;
- if (index > 0)
- return Convert.ToInt32(msg[..index]);
- else
- return Convert.ToInt32(msg[..1]);
- }
-
- public static string GetMessage(string msg)
- {
- int index = msg.IndexOf(';') + 1;
- return msg[index..];
- }
-
- public static string MakeMessage(int type, string msg)
- {
- return type + ";" + msg;
- }
- }
}
diff --git a/FunGameServer/Models/Config/Config.cs b/FunGame.Server/Others/Config/Config.cs
similarity index 90%
rename from FunGameServer/Models/Config/Config.cs
rename to FunGame.Server/Others/Config/Config.cs
index cc8a4cc..62d321c 100644
--- a/FunGameServer/Models/Config/Config.cs
+++ b/FunGame.Server/Others/Config/Config.cs
@@ -1,7 +1,4 @@
-using FunGame.Core.Api.Model.Enum;
-using FunGame.Core.Api.Util;
-using FunGameServer.Utils;
-using System;
+using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
@@ -10,8 +7,10 @@ using System.Net.Sockets;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
+using Milimoe.FunGame.Core.Entity.Enum;
+using Milimoe.FunGame.Core.Api.Utility;
-namespace FunGameServer.Models.Config
+namespace Milimoe.FunGame.Server.Others
{
public static class Config
{
@@ -32,6 +31,8 @@ namespace FunGameServer.Models.Config
public static Hashtable OrderList = new();
public static ReflectionHelper ReflectionHelper = new();
+ public static Hashtable OnlineClients = new Hashtable();
+
///
/// string: 玩家标识ID
/// Task:玩家线程
diff --git a/FunGameServer/Models/Config/OrderDictionary.cs b/FunGame.Server/Others/Config/OrderDictionary.cs
similarity index 90%
rename from FunGameServer/Models/Config/OrderDictionary.cs
rename to FunGame.Server/Others/Config/OrderDictionary.cs
index c8dafcc..a63f2a2 100644
--- a/FunGameServer/Models/Config/OrderDictionary.cs
+++ b/FunGame.Server/Others/Config/OrderDictionary.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace FunGameServer.Models.Config
+namespace Milimoe.FunGame.Server.Others
{
public class OrderDictionary
{
diff --git a/FunGameServer/Utils/Utility.cs b/FunGame.Server/Utility/Utility.cs
similarity index 86%
rename from FunGameServer/Utils/Utility.cs
rename to FunGame.Server/Utility/Utility.cs
index d0d8059..e632330 100644
--- a/FunGameServer/Utils/Utility.cs
+++ b/FunGame.Server/Utility/Utility.cs
@@ -1,7 +1,4 @@
-using FunGame.Core.Api.Model.Enum;
-using FunGame.Core.Api.Util;
-using FunGameServer.Models.Config;
-using MySql.Data.MySqlClient;
+using MySql.Data.MySqlClient;
using System;
using System.Collections;
using System.Collections.Generic;
@@ -9,10 +6,14 @@ using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
+using Milimoe.FunGame.Core.Entity.General;
+using Milimoe.FunGame.Core.Entity.Enum;
+using Milimoe.FunGame.Core.Api.Utility;
+using Milimoe.FunGame.Server.Others;
-namespace FunGameServer.Utils
+namespace Milimoe.FunGame.Server.Utility
{
- public class Utility : FunGame.Core.Api.Util.Utility
+ public class Utility : FunGame.Core.Api.Utility.Utility
{
}
@@ -184,4 +185,37 @@ namespace FunGameServer.Utils
Config.OrderList.Add(OrderDictionary.Restart, "重启服务器");
}
}
+
+ public class SocketHelper
+ {
+ public static int GetType(string msg)
+ {
+ int index = msg.IndexOf(';') - 1;
+ if (index > 0)
+ return Convert.ToInt32(msg[..index]);
+ else
+ return Convert.ToInt32(msg[..1]);
+ }
+
+ public static string GetMessage(string msg)
+ {
+ int index = msg.IndexOf(';') + 1;
+ return msg[index..];
+ }
+
+ public static string MakeMessage(int type, string msg)
+ {
+ return type + ";" + msg;
+ }
+
+ public static string MakeClientName(string name, User? user = null)
+ {
+ if (user != null)
+ {
+ return "玩家 " + user.Userame;
+ }
+ if (name != "") return "客户端(" + name + ")";
+ return "客户端";
+ }
+ }
}
diff --git a/FunGameServer.sln b/FunGameServer.sln
index 9da65a7..7015657 100644
--- a/FunGameServer.sln
+++ b/FunGameServer.sln
@@ -3,9 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32804.467
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunGameServer", "FunGameServer\FunGameServer.csproj", "{CFC4F490-967B-4F12-883E-86C2A6E61461}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunGame.Server", "FunGame.Server\FunGame.Server.csproj", "{CFC4F490-967B-4F12-883E-86C2A6E61461}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunGame.Core", "FunGame.Core\FunGame.Core.csproj", "{F5BACA36-3DE2-450A-8518-E5DC29991875}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunGame.Implement", "FunGame.Implement\FunGame.Implement.csproj", "{F5BACA36-3DE2-450A-8518-E5DC29991875}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution