This commit is contained in:
CortexCore
2024-03-31 23:31:00 +08:00
parent e179d2eb53
commit b7b89ee71a
641 changed files with 31286 additions and 22134 deletions

View File

@@ -14,6 +14,7 @@ namespace BITKit.Net
{
public class KCPNetServer:INetServer,INetProvider
{
public bool ManualTick { get; set; }
public event Action<int> OnClientConnected;
public event Action<int> OnClientDisconnected;
public event Action OnStartServer;
@@ -24,7 +25,7 @@ namespace BITKit.Net
{
AutoReset = true
};
public KCPNetServer()
{
server = new KcpServer(
@@ -40,21 +41,38 @@ namespace BITKit.Net
private void Tick(object sender, ElapsedEventArgs e)
{
if (server.IsActive() is false) return;
if (server.IsActive() is false || ManualTick) return;
server.Tick();
}
public void StartServer(ushort port = 27014)
{
OnStartServer?.Invoke();
server.Start(port);
_timer.Start();
if (IsRunningServer is false)
{
OnStartServer?.Invoke();
server.Start(port);
_timer.Start();
BIT4Log.Log<KCPNetServer>($"已启动KCP服务器:{port}");
}
else
{
BIT4Log.Warning<KCPNetServer>($"KCP服务器已经启动,忽略此次请求");
}
}
public void StopServer(bool dispose = false)
{
server.Stop();
OnStopServer?.Invoke();
_timer.Stop();
if (IsRunningServer)
{
server.Stop();
OnStopServer?.Invoke();
_timer.Stop();
BIT4Log.Log<KCPNetServer>($"已停止KCP服务器");
}
else
{
BIT4Log.Warning<KCPNetServer>($"KCP服务器未运行,忽略此次请求");
}
}
public bool IsRunningServer => server.IsActive();
public void SendMessageToClient(int id, string message)
@@ -140,6 +158,9 @@ namespace BITKit.Net
var targetId = reader.ReadInt32();
server.Send(targetId,bytes,channel);
break;
case NetCommandType.Ping:
server.Send(Id,new byte[]{(byte)NetCommandType.Ping},channel);
break;
default:
BIT4Log.Log<KCPNetServer>($"未知消息类型:{type},字节:{(byte)type}");
BIT4Log.Log<KCPNetServer>($"已收到:({Id}, {BitConverter.ToString(bytes.Array, bytes.Offset, bytes.Count)} @ {channel})");
@@ -235,5 +256,6 @@ namespace BITKit.Net
.Build();
server.Send(id,bytes, KcpChannel.Reliable);
}
}
}