64 lines
1.9 KiB
C#
64 lines
1.9 KiB
C#
using HaoYueNet.ServerNetwork;
|
|
using System.Net.Sockets;
|
|
|
|
namespace AxibugEmuOnline.Server.NetWork
|
|
{
|
|
public class IOCPNetWork : TcpSaeaServer
|
|
{
|
|
public IOCPNetWork(int numConnections, int receiveBufferSize)
|
|
: base(numConnections, receiveBufferSize)
|
|
{
|
|
OnClientNumberChange += ClientNumberChange;
|
|
OnReceive += ReceiveData;
|
|
OnDisconnected += OnDisconnect;
|
|
OnNetLog += OnShowNetLog;
|
|
}
|
|
|
|
private void ClientNumberChange(int num, AsyncUserToken token)
|
|
{
|
|
Console.WriteLine($"Client数发生变化 num->{num}");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 接受包回调
|
|
/// </summary>
|
|
/// <param name="CMDID">协议ID</param>
|
|
/// <param name="ERRCODE">错误编号</param>
|
|
/// <param name="data">业务数据</param>
|
|
private void ReceiveData(AsyncUserToken token, int CMDID, byte[] data)
|
|
{
|
|
DataCallBack(token.Socket, CMDID, data);
|
|
}
|
|
|
|
public void DataCallBack(Socket sk, int CMDID, byte[] data)
|
|
{
|
|
//AppSrv.g_Log.Debug("收到消息 CMDID =>" + CMDID + " 数据长度=>" + data.Length);
|
|
try
|
|
{
|
|
//抛出网络数据
|
|
NetMsg.Instance.PostNetMsgEvent(CMDID, sk, data);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine("逻辑处理错误:" + ex.ToString());
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 断开连接
|
|
/// </summary>
|
|
/// <param name="sk"></param>
|
|
public void OnDisconnect(AsyncUserToken token)
|
|
{
|
|
Console.WriteLine("断开连接");
|
|
AppSrv.g_ClientMgr.SetClientOfflineForSocket(token.Socket);
|
|
}
|
|
|
|
public void OnShowNetLog(string msg)
|
|
{
|
|
AppSrv.g_Log.Debug(msg);
|
|
}
|
|
|
|
}
|
|
}
|