using System; using System.Collections.Generic; using System.Linq; using System.Text; using Slice; using CommonNetwork_ICE.Common; using CommonServer.Server; using CommonServer_ICE.Session; using CommonServer.Protocol; using CommonLang.Protocol; using CommonNetwork_ICE.Util; using CommonServer_ICE.Server; using CommonLang.Log; namespace CommonServer_ICE.Msg { /// <summary> /// ICE TCP通信消息委托处理类:根据服务器消息接收类的委托,处理客户端发来的ICE网络消息 /// </summary> internal class ServerMsgHandlerTcpDelegate : ServerMsgHandler { private static Logger log = LoggerFactory.GetLogger("ServerMsgHandlerTcpDelegate"); private IceConnectServer server; public ServerMsgHandlerTcpDelegate(IceConnectServer server) { this.server = server; } /// <summary> /// 获取通讯类型 /// </summary> public override IceConnectServer getServer() { return server; } /// <summary> /// 处理收到客户端发来的关键数据包 /// </summary> /// <param name="recvPort">发送方侦听端口</param> /// <param name="message">数据包</param> /// <param name="ip">发送方IP</param> /// <param name="port">发送方端口</param> public override void RecvData(int recvPort, TransMessage message, string ip, int port) { log.Trace("收到客户端发来数据,地址IP【" + ip + "】,端口【" + port + "】,发送方侦听端口【" + recvPort + "】, 编号:" + message.serial); IceServerIoSession session; if (SessionManager.hasSession(ip, port, recvPort)) { session = (IceServerIoSession)SessionManager.getSession(ip, port, recvPort); if (!session.IsConnected) { log.Error("会话已经关闭,当前消息忽略。客户端地址IP【" + ip + "】,端口【" + port + "】,发送方侦听端口【" + recvPort + "】"); return; } } else { log.Error("非法的数据发送,客户端地址IP【" + ip + "】,端口【" + port + "】,发送方侦听端口【" + recvPort + "】"); return; } // 消息转码 IMessage iMessage; try { session.Codec.doDecode(message, out iMessage); session.Receive(iMessage); } catch (Exception e) { session.HandleException(e); return; } } /// <summary> /// 处理收到客户端发来的关键数据包确认序列号 /// </summary> /// <param name="recvPort">发送方侦听端口</param> /// <param name="serial">序列号</param> /// <param name="ip">发送方IP</param> /// <param name="port">发送方端口</param> public override void SendDataRecvAck(int recvPort, long serial, string ip, int port) { // TCP时不处理 } } }