public void OnReceivedCompleted(RemoteSocketMsg msg)
        {
            if (hyperSocket != null && msg.data != null)
            {
                if (serverSocket.protocolType == ProtocolType.Tcp)
                {
                    if (msg.sender.hySocket == null)
                    {
                        // 连接握手开头验证
                        if (msg.data.Compare(HyperSocket.FirstConnectBytes))
                        {
                            var data = hyperSocket.GenerateVerifyConnection(out var sessionId);
                            if (data != null)
                            {
                                msg.sender.hySocket = hyperSocket.GetSocketAtIndex(sessionId);
                                // 绑定数据
                                msg.sender.hySocket.tcpConn = msg.sender;
                                msg.sender.hySocket.ip      = msg.sender.hySocket.tcpConn.socket.ip;
                                msg.sender.hySocket.tcpPort = msg.sender.hySocket.tcpConn.socket.port;
                                // 发送验证数据
                                msg.sender.Send(sessionId, data);
                            }
                        }
                        else
                        {
                            msg.sender.Destroy();
                        }
                    }
                    else
                    {
                        // 处理消息
                        var remote = hyperSocket.GetSocketAtIndex(msg.sender.hySocket.SessionId);
                        if (remote != null)
                        {
                            if (msg.data != null && remote.isValid && remote.CheckSameRemote(msg.sender))
                            {
                                if (!remote.IsAlive && msg.data.Compare(HyperSocket.ConnectedClientBytes))
                                {
                                    remote.IsAlive = true;
                                    remote.SendPong();
                                    listener.OnOpen(remote);
                                }
                                else if (hyperSocket.config.UseSSL && !remote.isSecurityConnected)
                                {
                                    var key = hyperSocket.ssl.RSADecrypt(msg.data);
                                    if (key != null)
                                    {
                                        remote.isSecurityConnected = true;
                                        remote.ssl.SetAESKey(key.AsString());
                                        remote.SendSignData(hyperSocket.ssl.RSASignData(remote.ssl.AESEncrypt(HyperSocket.SignSecurityBytes)));
                                    }
                                    else
                                    {
                                        remote.CloseSocket();
                                    }
                                }
                                else
                                {
                                    if (hyperSocket.config.UseSSL && (hyperSocket.config.SSLMode == 0 || hyperSocket.config.SSLMode == 1))
                                    {
                                        listener.OnTcpReceive(remote.ssl.AESDecrypt(msg.data), remote);
                                    }
                                    else
                                    {
                                        listener.OnTcpReceive(msg.data, remote);
                                    }
                                }
                            }
                            else
                            {
                                remote.CloseSocket();
                            }
                        }
                    }
                }
                else if (serverSocket.protocolType == ProtocolType.Udp)
                {
                    if (msg.sessionId > ushort.MinValue)
                    {
                        var remote = hyperSocket.GetSocketAtIndex(msg.sessionId);
                        if (remote != null)
                        {
                            // 判断是否一样来源
                            if (remote.udpConn == null)
                            {
                                remote.udpConn = new RemoteConnection(msg.remoteEndPoint, this);
                                remote.udpPort = remote.udpConn.socket.port;
                            }

                            // 处理信息
                            if (remote.CheckSameRemote(msg.remoteEndPoint))
                            {
                                remote.RecvData(msg.data);
                            }
                            else
                            {
                                remote.CloseSocket();
                            }
                        }
                    }
                }
            }
        }