using AxibugProtobuf; using HaoYueNet.ServerNetwork; using ServerCore.Common.Enum; using ServerCore.Event; using ServerCore.Manager; using System.Net; using System.Net.Sockets; namespace ServerCore.NetWork { public class IOCPNetWork : SocketManager { ServerType mServerType; public IOCPNetWork(int numConnections, int receiveBufferSize, ServerType serverType) : base(numConnections, receiveBufferSize) { mServerType = serverType; ClientNumberChange += IOCPNetWork_ClientNumberChange; } private void IOCPNetWork_ClientNumberChange(int num, AsyncUserToken token) { Console.WriteLine("Client数发生变化"); } /// /// 接受包回调 /// /// 协议ID /// 错误编号 /// 业务数据 public override void DataCallBack(AsyncUserToken token, int CMDID, byte[] data) { //DataCallBackToOld(token.Socket, CMDID, data); ServerManager.g_Log.Debug("收到消息 CMDID =>" + CMDID + " 数据长度=>" + data.Length); //抛出网络数据 NetMsg.Instance.PostNetMsgEvent(CMDID, token.Socket, data); } //public void DataCallBackToOld(Socket sk, int CMDID, byte[] data) //{ // ServerManager.g_Log.Debug("收到消息 CMDID =>" + CMDID + " 数据长度=>" + data.Length); // try // { // //抛出网络数据 // NetMsg.Instance.PostNetMsgEvent(CMDID, sk, data); // } // catch (Exception ex) // { // Console.WriteLine("逻辑处理错误:" + ex.ToString()); // } //} /// /// 断开连接 /// /// public override void OnClose(AsyncUserToken token) { ServerManager.g_Log.Debug($"断开连接,ServerType->{mServerType} | {((IPEndPoint)token.Socket.LocalEndPoint).Address}"); //ServerManager.g_ClientMgr.SetClientOfflineForSocket(token.Socket); //TODO 要删除不同的 EventSystem.Instance.PostEvent(EEvent.OnSocketDisconnect, mServerType, token.Socket); } } }