//主动发送 public static bool SocketSend(int id, Package pkg) { if (socketPool.ContainsKey(id)) { try { BaseSocket s = socketPool[id]; if (s.GetSocketId() != IpManager.ListenSocketId) { var sendBytes = PackageHelper.GetNetworkSendBuffer(pkg); if (s.SocketSend(sendBytes, 0, sendBytes.Length) != SOCKET_CODE.SUCCESS) { socketPool[id].SocketClose(); socketPool.Remove(id); } return(true); } } catch { socketPool[id].SocketClose(); socketPool.Remove(id); } } return(false); }
public static int OnRecv(byte[] buffer, int length, BaseSocket socket) { int ret = 0; byte commandType=0; BASESOCKET_TYPE socketType = socket.SocketType(); switch (socketType) { case BASESOCKET_TYPE.SOCKET_TCP: { ret = CheckPackageLength(buffer, length, out commandType); ////TraceUtil.Log("ServiceManager OnRecv length:" + length + "ret " + ret); if (ret > length) { return ret; } } break; case BASESOCKET_TYPE.SOCKET_UDP: ret = length; break; default: break; } if (ServiceMap.ContainsKey(commandType)) { //TraceUtil.Log("Data Length:" + length + " CheckLength:" + ret + " BuffLength:" + buffer.Length); //TraceUtil.Log("ReceiveTCP:" + commandType + "," + (byte)MasterMsgType.NET_ROOT_TRADE); ServiceMap[commandType].SaveResponseHandleToInvoke(buffer.Take(ret).ToArray(), socket.GetSocketId(), commandType); } else { //TraceUtil.Log("Data Length:" + length + " CheckLength:" + ret + " BuffLength:" + buffer.Length); } return ret; }
public static void OnRecvUDP(byte[] recvBuffer, int length, BaseSocket socket) { //MultiGameView.Log("Recieve collect Player Request ServiceManager:"); byte commandType; //CommonTrace.Log(string.Format("收到UDP:数据类型{0}", packageType)); var binaryHead = PackageHelper.BytesToStuct<PkgHead>(recvBuffer); commandType = binaryHead.MasterMsgType; int ret = binaryHead.DataLength; if (ServiceMap.ContainsKey(commandType)) { ServiceMap[commandType].SaveResponseHandleToInvoke(recvBuffer.Take(ret).ToArray(), socket.GetSocketId(), commandType); } }