示例#1
0
        private bool IsSupportProtocol(string topic)
        {
            string       procotol = GetProcotolTypeFromTopic(topic);
            ProcotolType pt       = GetProcotolType(procotol);

            return(ProcotolType.Invalid == pt);
        }
示例#2
0
        //断开连接
        public void OnBreakSession(SubscribeMsg msg)
        {
            string       procotol = GetProcotolTypeFromTopic(msg.Topic);
            ProcotolType pt       = GetProcotolType(procotol);

            if (ProcotolType.Invalid == pt)
            {
                // unsupported procotol
                return;
            }

            var data = JsonHelper.SerializeJsonToObject <SessionData>(msg.Data);
            var key  = $"{procotol}://{data.target.raddr}:{data.target.rport}";

            if (!_Sessions.ContainsKey(key))
            {
                return;
            }

            _Sessions[key].SendAsync(data.data);                        //发送数据
            _Sessions[key].Stop();                                      //释放数据
            _Sessions.Remove(key);
        }
示例#3
0
        //创建链接
        public void OnMakeSession(SubscribeMsg msg)
        {
            string       procotol = GetProcotolTypeFromTopic(msg.Topic);
            ProcotolType pt       = GetProcotolType(procotol);

            if (ProcotolType.Invalid == pt)
            {
                // unsupported procotol
                return;
            }

            var sessionData = JsonHelper.SerializeJsonToObject <SessionData>(msg.Data);
            var key         = $"{procotol}://{sessionData.target.raddr}:{sessionData.target.rport}";

            if (_Sessions.ContainsKey(key))
            {
                _Sessions[key].SendAsync(sessionData.data);                     //如果连接已经建立了,就只发送数据
                return;
            }

            IASession session = null;

            if (ProcotolType.UDP == pt)
            {
                session = new UdpSession(sessionData.target);                   //TODO 先只处理udp协议
                session.SendAsync(sessionData.data);
            }
            else if (ProcotolType.IP == pt)
            {
                session = new IpSession(sessionData.target);
                if (!session.Init(sessionData.target.laddr))
                {
                    return;
                }
            }
            _Sessions.Add(key, session);
        }
示例#4
0
        private ProcotolType GetProcotolType(string procotol)
        {
            ProcotolType type = ProcotolType.Invalid;

            procotol = procotol.ToUpper();
            if (procotol.Equals("UDP"))
            {
                type = ProcotolType.UDP;
            }
            else if (procotol.Equals("TCP"))
            {
                type = ProcotolType.TCP;
            }
            else if (procotol.Equals("IP"))
            {
                type = ProcotolType.IP;
            }
            else if (procotol.Equals("FTP"))
            {
                type = ProcotolType.FTP;
            }

            return(type);
        }