mirror of
https://github.com/project-redbud/FunGame-Server.git
synced 2025-12-05 08:09:03 +00:00
实现新接口
This commit is contained in:
parent
dfe4c17cbb
commit
91bca66b60
@ -1,12 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FunGame.Core.Implement
|
||||
{
|
||||
internal class ServerInterfaceImpl
|
||||
{
|
||||
}
|
||||
}
|
||||
@ -5,7 +5,7 @@ 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}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunGame.Core", "FunGameServer.Core\FunGame.Core.csproj", "{F5BACA36-3DE2-450A-8518-E5DC29991875}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunGame.Core", "FunGame.Core\FunGame.Core.csproj", "{F5BACA36-3DE2-450A-8518-E5DC29991875}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
|
||||
@ -31,6 +31,7 @@
|
||||
<ItemGroup>
|
||||
<Reference Include="FunGame.Core.Api">
|
||||
<HintPath>..\..\FunGame\bin\Debug\net6.0\FunGame.Core.Api.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@ using FunGameServer.Sockets;
|
||||
using System.Net.WebSockets;
|
||||
using FunGameServer.Models.Config;
|
||||
using FunGameServer.Utils;
|
||||
using static FunGame.Core.Api.Model.Enum.CommonEnums;
|
||||
|
||||
bool Running = true;
|
||||
Socket? ServerSocket = null;
|
||||
@ -29,7 +30,16 @@ try
|
||||
|
||||
// 开始监听连接
|
||||
ServerSocket.Listen(Config.MAX_PLAYERS);
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "服务器启动成功,正在监听 . . .");
|
||||
ServerHelper.WriteLine("服务器启动成功,正在监听 . . .");
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
Config.ServerNotice = ServerHelper.GetServerNotice();
|
||||
if (Config.ServerNotice != "")
|
||||
ServerHelper.WriteLine("\n\n" + Config.ServerNotice + "\n\n");
|
||||
else
|
||||
ServerHelper.WriteLine("无法读取服务器公告。");
|
||||
});
|
||||
|
||||
while (Running)
|
||||
{
|
||||
@ -39,9 +49,9 @@ try
|
||||
socket = ServerSocket.Accept();
|
||||
IPEndPoint? clientIP = (IPEndPoint?)socket.RemoteEndPoint;
|
||||
if (clientIP != null)
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "客户端" + clientIP.ToString() + "连接 . . .");
|
||||
ServerHelper.WriteLine("客户端" + clientIP.ToString() + "连接 . . .");
|
||||
else
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "未知地点客户端连接 . . .");
|
||||
ServerHelper.WriteLine("未知地点客户端连接 . . .");
|
||||
if (Read(socket) && Send(socket))
|
||||
Task.Factory.StartNew(() =>
|
||||
{
|
||||
@ -49,13 +59,13 @@ try
|
||||
});
|
||||
else
|
||||
if (clientIP != null)
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "客户端" + clientIP.ToString() + "连接失败。");
|
||||
ServerHelper.WriteLine("客户端" + clientIP.ToString() + "连接失败。");
|
||||
else
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "客户端连接失败。");
|
||||
ServerHelper.WriteLine("客户端连接失败。");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "ERROR: 客户端断开连接!\n" + e.StackTrace);
|
||||
ServerHelper.WriteLine("ERROR: 客户端断开连接!\n" + e.StackTrace);
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,7 +73,7 @@ try
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
SocketHelper.WriteLine(e.StackTrace);
|
||||
ServerHelper.WriteLine(e.StackTrace);
|
||||
if (ServerSocket != null)
|
||||
{
|
||||
ServerSocket.Close();
|
||||
@ -76,7 +86,7 @@ finally
|
||||
{
|
||||
string? order = "";
|
||||
order = Console.ReadLine();
|
||||
SocketHelper.WriteLine("\r> " + order);
|
||||
ServerHelper.Type();
|
||||
if (order != null && !order.Equals(""))
|
||||
{
|
||||
switch (order)
|
||||
@ -89,7 +99,7 @@ finally
|
||||
}
|
||||
}
|
||||
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "服务器已关闭,按任意键退出程序。");
|
||||
ServerHelper.WriteLine("服务器已关闭,按任意键退出程序。");
|
||||
Console.ReadKey();
|
||||
|
||||
|
||||
@ -105,14 +115,14 @@ bool Read(Socket socket)
|
||||
msg = SocketHelper.GetMessage(msg);
|
||||
if (typestring != SocketEnums.TYPE_UNKNOWN)
|
||||
{
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "[ 客户端(" + typestring + ")] -> " + msg);
|
||||
ServerHelper.WriteLine("[ 客户端(" + typestring + ")] -> " + msg);
|
||||
return true;
|
||||
}
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "客户端发送了不符合FunGame规定的字符,拒绝连接。");
|
||||
ServerHelper.WriteLine("客户端发送了不符合FunGame规定的字符,拒绝连接。");
|
||||
return false;
|
||||
}
|
||||
else
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "客户端没有回应。");
|
||||
ServerHelper.WriteLine("客户端没有回应。");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -124,11 +134,11 @@ bool Send(Socket socket)
|
||||
buffer = Config.DEFAULT_ENCODING.GetBytes(SocketHelper.MakeMessage((int)SocketEnums.Type.CheckLogin, msg));
|
||||
if (socket.Send(buffer) > 0)
|
||||
{
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "[ 客户端 ] <- " + msg);
|
||||
ServerHelper.WriteLine("[ 客户端 ] <- " + msg);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "无法传输数据,与客户端的连接可能丢失。");
|
||||
ServerHelper.WriteLine("无法传输数据,与客户端的连接可能丢失。");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using FunGame.Core.Api.Util;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@ -11,7 +12,7 @@ namespace FunGameServer.Models.Config
|
||||
{
|
||||
public static class Config
|
||||
{
|
||||
public static int MAX_PLAYERS = 16; // 最多接受连接的玩家数量
|
||||
public static int MAX_PLAYERS = 20; // 最多接受连接的玩家数量
|
||||
public static int ONLINE_PLAYERS = 0; // 已连接的玩家数量
|
||||
public static int CONNECTING_PLAYERS = 0; // 正在连接的玩家数量
|
||||
public static string SERVER_NAME = "米粒的糖果屋"; // 服务器名称
|
||||
@ -19,6 +20,9 @@ namespace FunGameServer.Models.Config
|
||||
public static Encoding DEFAULT_ENCODING = Encoding.UTF8; // 默认传输字符集
|
||||
public static int MAX_CONNECTFAILED = 5; // 最大连接失败次数
|
||||
public const string CONSOLE_TITLE = "FunGame Server"; // 控制台的标题
|
||||
public static string ServerNotice = ""; // 服务器的公告
|
||||
|
||||
public static AssemblyHelper DefaultAssemblyHelper = new AssemblyHelper();
|
||||
|
||||
/// <summary>
|
||||
/// string: 玩家标识ID
|
||||
@ -28,10 +32,9 @@ namespace FunGameServer.Models.Config
|
||||
|
||||
/**
|
||||
* string:房间号
|
||||
* string:玩家标识ID
|
||||
* Task:玩家线程
|
||||
*/
|
||||
public static ConcurrentDictionary<string, ConcurrentDictionary<string, Task>> PlayingPlayers= new ConcurrentDictionary<string, ConcurrentDictionary<string, Task>>();
|
||||
public static ConcurrentDictionary<string, Task> PlayingPlayers= new ConcurrentDictionary<string, Task>();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ using FunGameServer.Utils;
|
||||
using System.Reflection.Metadata;
|
||||
using FunGame.Core.Api.Model.Entity;
|
||||
using System.Net;
|
||||
using static FunGame.Core.Api.Model.Enum.CommonEnums;
|
||||
|
||||
namespace FunGameServer.Sockets
|
||||
{
|
||||
@ -42,7 +43,7 @@ namespace FunGameServer.Sockets
|
||||
int type = SocketHelper.GetType(msg);
|
||||
string typestring = SocketHelper.GetTypeString(type);
|
||||
msg = SocketHelper.GetMessage(msg);
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "[ 客户端(" + typestring + ")] -> " + msg);
|
||||
ServerHelper.WriteLine("[ 客户端(" + typestring + ")] -> " + msg);
|
||||
switch (type)
|
||||
{
|
||||
case (int)SocketEnums.Type.GetNotice:
|
||||
@ -63,7 +64,7 @@ namespace FunGameServer.Sockets
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "ERROR:客户端没有回应。\n" + e.StackTrace);
|
||||
ServerHelper.WriteLine("ERROR:客户端没有回应。\n" + e.StackTrace);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -79,14 +80,14 @@ namespace FunGameServer.Sockets
|
||||
if (socket.Send(buffer) > 0)
|
||||
{
|
||||
if (msg != "")
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "[ 客户端(" + typestring + ")] <- " + msg);
|
||||
ServerHelper.WriteLine("[ 客户端(" + typestring + ")] <- " + msg);
|
||||
return true;
|
||||
}
|
||||
throw new Exception();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "ERROR:客户端没有回应。" + e.StackTrace);
|
||||
ServerHelper.WriteLine("ERROR:客户端没有回应。" + e.StackTrace);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -102,7 +103,7 @@ namespace FunGameServer.Sockets
|
||||
private void CreateStreamReader()
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "Creating: StreamReader...OK");
|
||||
ServerHelper.WriteLine("Creating: StreamReader...OK");
|
||||
while (Running)
|
||||
{
|
||||
if (Socket != null)
|
||||
@ -112,8 +113,8 @@ namespace FunGameServer.Sockets
|
||||
FailedTimes++;
|
||||
if (FailedTimes >= Config.MAX_CONNECTFAILED)
|
||||
{
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "ERROR: Too Many Faileds.");
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "CLOSE: StreamReader is Closed.");
|
||||
ServerHelper.WriteLine("ERROR: Too Many Faileds.");
|
||||
ServerHelper.WriteLine("CLOSE: StreamReader is Closed.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -121,8 +122,8 @@ namespace FunGameServer.Sockets
|
||||
}
|
||||
else
|
||||
{
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "ERROR: Socket is Closed.");
|
||||
SocketHelper.WriteLine(SocketHelper.GetPrefix() + "CLOSE: StringStream is Closed.");
|
||||
ServerHelper.WriteLine("ERROR: Socket is Closed.");
|
||||
ServerHelper.WriteLine("CLOSE: StringStream is Closed.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
44
FunGameServer/Utils/ServerHelper.cs
Normal file
44
FunGameServer/Utils/ServerHelper.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using FunGameServer.Models.Config;
|
||||
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 ServerHelper
|
||||
{
|
||||
public static string GetPrefix()
|
||||
{
|
||||
DateTime now = System.DateTime.Now;
|
||||
return now.AddMilliseconds(-now.Millisecond).ToString() + " " + Config.SERVER_NAME + ":";
|
||||
}
|
||||
|
||||
public static void WriteLine(string? msg)
|
||||
{
|
||||
Console.Write("\r" + GetPrefix() + msg + "\n\r> ");
|
||||
}
|
||||
|
||||
public static void Type()
|
||||
{
|
||||
Console.Write("\r> ");
|
||||
}
|
||||
|
||||
public static string GetServerNotice()
|
||||
{
|
||||
try
|
||||
{
|
||||
string? ServerNotice = (string?)Config.DefaultAssemblyHelper.GetFunGameCoreValue((int)InterfaceType.ServerInterface, (int)InterfaceMethod.ServerNotice);
|
||||
if (ServerNotice != null)
|
||||
return ServerNotice;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
ServerHelper.WriteLine(e.StackTrace);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -48,16 +48,5 @@ namespace FunGameServer.Utils
|
||||
{
|
||||
return type + ";" + msg;
|
||||
}
|
||||
|
||||
public static string GetPrefix()
|
||||
{
|
||||
DateTime now = System.DateTime.Now;
|
||||
return now.AddMilliseconds(-now.Millisecond).ToString() + " " + Config.SERVER_NAME + ":";
|
||||
}
|
||||
|
||||
public static void WriteLine(string? msg)
|
||||
{
|
||||
Console.Write("\r" + msg + "\n\r> ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user