1
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user