HaoYueTunnel/ServerCore/NetWork/IOCPNetWork.cs

60 lines
1.9 KiB
C#
Raw Normal View History

2023-12-25 17:43:11 +08:00
using HaoYueNet.ServerNetwork;
2023-06-15 15:45:58 +08:00
using ServerCore.Common.Enum;
using ServerCore.Event;
2023-05-25 18:30:22 +08:00
using ServerCore.Manager;
2023-06-15 15:45:58 +08:00
using System.Net;
2023-05-23 17:57:24 +08:00
2023-05-25 18:30:22 +08:00
namespace ServerCore.NetWork
2023-05-23 17:57:24 +08:00
{
2023-12-25 17:43:11 +08:00
public class IOCPNetWork : TcpSaeaServer
2023-05-23 17:57:24 +08:00
{
2023-06-15 15:45:58 +08:00
ServerType mServerType;
public IOCPNetWork(int numConnections, int receiveBufferSize, ServerType serverType)
2023-05-23 17:57:24 +08:00
: base(numConnections, receiveBufferSize)
{
2023-06-15 15:45:58 +08:00
mServerType = serverType;
2023-12-25 17:43:11 +08:00
OnClientNumberChange += ClientNumberChange;
OnReceive += ReceiveData;
OnDisconnected += OnDisconnect;
OnNetLog += OnShowNetLog;
2023-05-23 17:57:24 +08:00
}
2023-12-25 17:43:11 +08:00
void ClientNumberChange(int num, AsyncUserToken token)
2023-05-23 17:57:24 +08:00
{
Console.WriteLine("Client数发生变化");
}
/// <summary>
/// 接受包回调
/// </summary>
/// <param name="CMDID">协议ID</param>
/// <param name="ERRCODE">错误编号</param>
/// <param name="data">业务数据</param>
2023-12-25 17:43:11 +08:00
void ReceiveData(AsyncUserToken token, int CMDID, byte[] data)
2023-05-23 17:57:24 +08:00
{
2023-06-15 15:45:58 +08:00
//DataCallBackToOld(token.Socket, CMDID, data);
2023-05-23 17:57:24 +08:00
ServerManager.g_Log.Debug("收到消息 CMDID =>" + CMDID + " 数据长度=>" + data.Length);
2023-06-15 15:45:58 +08:00
//抛出网络数据
NetMsg.Instance.PostNetMsgEvent(CMDID, token.Socket, data);
2023-05-23 17:57:24 +08:00
}
/// <summary>
/// 断开连接
/// </summary>
/// <param name="sk"></param>
2023-12-25 17:43:11 +08:00
void OnDisconnect(AsyncUserToken token)
2023-05-23 17:57:24 +08:00
{
2023-06-15 15:45:58 +08:00
ServerManager.g_Log.Debug($"断开连接,ServerType->{mServerType} | {((IPEndPoint)token.Socket.LocalEndPoint).Address}");
//ServerManager.g_ClientMgr.SetClientOfflineForSocket(token.Socket);
2023-12-25 17:43:11 +08:00
//要删除不同的
2023-06-15 15:45:58 +08:00
EventSystem.Instance.PostEvent(EEvent.OnSocketDisconnect, mServerType, token.Socket);
2023-05-23 17:57:24 +08:00
}
2023-12-25 17:43:11 +08:00
void OnShowNetLog(string msg)
{
ServerManager.g_Log.Debug(msg);
}
2023-05-23 17:57:24 +08:00
}
}