using CommonNetwork_ICE.Msg; using Slice; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CommonNetwork_ICE.handler { /// /// 客户端UDP数据接收实现类:接收服务器端发来的ICE请求,委托监听器实现类处理 /// internal class ClientUdpSendHandler : SenderDisp_ { private ClientMsgHandler delegateHandler; public ClientUdpSendHandler(ClientMsgHandler delegateHandler) { this.delegateHandler = delegateHandler; } /// /// 接收服务器端发送的数据包 /// /// 侦听端口 /// 数据包 /// Ice通讯包 public override void SendData(int recvPort, TransMessage message, Ice.Current current) { Ice.UDPConnectionInfo udpConInfo = (Ice.UDPConnectionInfo)current.con.getInfo(); delegateHandler.RecvData(recvPort, message, udpConInfo.remoteAddress, udpConInfo.remotePort); } /// /// 接收服务器收到客户端数据包时回送的应答关键数据包序列号 /// /// 侦听端口 /// 应答数据包序列号 /// Ice通讯包 public override void SendAck(int recvPort, long serial, Ice.Current current) { Ice.UDPConnectionInfo udpConInfo = (Ice.UDPConnectionInfo)current.con.getInfo(); delegateHandler.SendDataRecvAck(recvPort, serial, udpConInfo.remoteAddress, udpConInfo.remotePort); } /// /// 服务器连接客户端 /// /// 侦听端口 /// Ice通讯包 public override void Connect(int recvPort, Ice.Current current) { // 目前服务端不会主动连接到客户端,所以忽略次方法 } /// /// 接收客户端连接到服务器时,服务器发回的正常连接响应 /// /// Ice通讯包 public override void ConnectAck(Ice.Current current) { Ice.UDPConnectionInfo udpConInfo = (Ice.UDPConnectionInfo)current.con.getInfo(); delegateHandler.ConnectAck(udpConInfo.remoteAddress, udpConInfo.remotePort); } /// /// 处理服务器发来的主动关闭请求 /// /// 侦听端口 /// Ice通讯包 public override void Close(int recvPort, Ice.Current current) { Ice.UDPConnectionInfo udpConInfo = (Ice.UDPConnectionInfo)current.con.getInfo(); delegateHandler.Close(recvPort, udpConInfo.remoteAddress, udpConInfo.remotePort); } /// /// 客户端关闭通讯通道时服务器发来的成功关闭响应 /// /// 侦听端口 /// Ice通讯包 public override void CloseAck(int recvPort, Ice.Current current) { Ice.UDPConnectionInfo udpConInfo = (Ice.UDPConnectionInfo)current.con.getInfo(); delegateHandler.CloseAck(recvPort, udpConInfo.remoteAddress, udpConInfo.remotePort); } } }