Exemplo n.º 1
0
        /// <summary>
        /// 将字节转为消息
        /// </summary>
        /// <param name="msgbs"></param>
        /// <returns></returns>
        public MsgInfo.MsgInfo ServerbyteToMsg(byte[] msgbs)
        {
            MemoryStream    ms  = new MemoryStream(msgbs);
            BinaryFormatter bf  = new BinaryFormatter();
            object          obj = null;

            try
            {
                obj = bf.Deserialize(ms);
            }
            catch (System.Runtime.Serialization.SerializationException ex)
            {
                MemoryStream newms = gzip.DerStreamZip(ms);
                obj = bf.Deserialize(newms);
            }
            if (obj.GetType() == typeof(MsgInfo.MsgInfo))
            {
                MsgInfo.MsgInfo info = obj as MsgInfo.MsgInfo;
                if (string.IsNullOrEmpty(info.SendFromID))
                {
                    goto turntomsg;
                }
                //info.Ver = "NetTalk";
                return(info);
            }
            turntomsg : return(null);
        }
Exemplo n.º 2
0
 private static bool findfile(MsgInfo.MsgInfo info)
 {
     try
     {
         return(info.SendFromID[0].Equals(_curfileip[0]) && info.SendFromID[1].Equals(_curfileip[1]) && info.SendFromID[2].Equals(_curfileip[2]) && info.SendFromID[3].Equals(_curfileip[3]) && System.IO.Path.GetFileName(info.SendInfo).Equals(_curfilename));
     }
     catch
     {
         return(false);
     }
 }
Exemplo n.º 3
0
 private static bool findfilebyguid(MsgInfo.MsgInfo info)
 {
     try
     {
         return(info.InfoGuid.Equals(_fileguid));
     }
     catch
     {
         return(false);
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// 重新发送好友丢失并重新请求的包
        /// </summary>
        /// <param name="info"></param>
        public static void sendRequestImgPack(MsgInfo.MsgInfo info)
        {
            string guid  = info.InfoType;
            string index = info.SendInfo;

            MsgInfo.MsgInfo lostedinfo = _poolFactory.findSendedImgPart(guid, index);
            if (lostedinfo == null)
            {
                return;
            }
            _poolFactory.addSendInfo(lostedinfo, new string[] { info.SendFromID });
        }
Exemplo n.º 5
0
 private static MsgInfo.MsgInfo sayHelloToServer()
 {
     MsgInfo.MsgInfo info = new MsgInfo.MsgInfo();
     info.InfoGuid     = serverHelper._guid;
     info.IsNet        = true;
     info.NetUserID    = serverHelper.serverguid;
     info.ProtocolType = MsgInfo.MsgInfo.sProtocolType.MSGTYPE_LEVELSERVER_HELLO;
     info.SendFromID   = serverHelper.serverguid;
     info.SendInfo     = "hello";
     info.SendTo       = serverHelper.serverguid;
     info.SendToID     = serverHelper.serverguid;
     info.Ver          = "NetTalk";
     return(info);
 }
Exemplo n.º 6
0
 /// <summary>
 /// 转发消息
 /// </summary>
 /// <param name="oldinfo"></param>
 public static void turnSendTextMsg(MsgInfo.MsgInfo oldinfo, System.Net.IPEndPoint iep)
 {
     //Friend.Friend friend;
     //friend = _poolFactory.findFriend(oldinfo.SendToID);
     //if (friend != null)
     //{
     //    if(!friend.Ver.Equals("NetTalk"))
     //    {
     //    WinLanMsg.Util.UserInfo info = new WinLanMsg.Util.UserInfo();
     //    info.ProtocolType = 5;
     //    info.SendFromIp = serverHelper.selfIP;
     //    info.SendToIp = serverHelper.getByteIP("255.255.255.255");
     //    info.SendInfo = oldinfo.SendInfo;
     //    _poolFactory.addSendInfo(info,new string[]{"255.255.255.255"},friend.Port);
     //    }
     //    else
     //    {
     //        _poolFactory.addSendInfo(oldinfo,oldinfo,friend.Port);
     //    }
     //}
 }
Exemplo n.º 7
0
        /// <summary>
        /// 将老版本消息转为新版本的
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public MsgInfo.MsgInfo userinfoToMsginfo(object obj)
        {
            MsgInfo.MsgInfo info = new MsgInfo.MsgInfo();
            Type            t    = obj.GetType();

            MethodInfo[] methods = t.GetMethods();
            info.InfoGuid = _guid;
            foreach (MethodInfo method in methods)
            {
                object robj;
                try
                {
                    if (method.Name.Contains("get_ProtocolType"))
                    {
                        robj = method.Invoke(obj, null);
                        if (robj.GetType() == typeof(MsgInfo.MsgInfo.sProtocolType))
                        {
                            info.ProtocolType = (MsgInfo.MsgInfo.sProtocolType)(robj);
                            info.Ver          = "LanTalk";
                        }
                        else
                        {
                            int p = int.Parse(robj == null ? "0" : robj.ToString());
                            if (p > 5 || p < 1)
                            {
                                return(null);
                            }
                            info.ProtocolType = (MsgInfo.MsgInfo.sProtocolType)(p);
                            info.Ver          = "LanMsg";
                        }
                    }
                    else if (method.Name.Contains("get_SendFromID"))
                    {
                        robj            = method.Invoke(obj, null);
                        info.SendFromID = robj.ToString();
                    }
                    else if (method.Name.Contains("get_SendFromIp"))
                    {
                        robj            = method.Invoke(obj, null);
                        info.SendFromID = getIP((byte[])robj);
                    }
                    else if (method.Name.Contains("get_SendToID"))
                    {
                        robj          = method.Invoke(obj, null);
                        info.SendToID = robj.ToString();
                    }
                    else if (method.Name.Contains("get_SendToIp"))
                    {
                        robj          = method.Invoke(obj, null);
                        info.SendToID = getIP((byte[])robj);
                    }
                    else if (method.Name.Contains("get_SendInfo"))
                    {
                        robj          = method.Invoke(obj, null);
                        info.SendInfo = (robj == null ? null : robj.ToString());
                    }
                }
                catch
                { }
            }

            return(info);
        }
Exemplo n.º 8
0
 /// <summary>
 /// 转发内网外网消息
 /// </summary>
 /// <param name="info"></param>
 public static void turnMsgInLanAndNet(MsgInfo.MsgInfo info)
 {
 }
Exemplo n.º 9
0
 /// <summary>
 /// 发送重请的包
 /// </summary>
 /// <param name="info"></param>
 public static void sendFilePackIndex(MsgInfo.MsgInfo info)
 {
 }
Exemplo n.º 10
0
 public UIMsgs(MsgInfo.MsgInfo msg, System.Net.IPEndPoint addr)
 {
     info = msg;
     iep  = addr;
 }
Exemplo n.º 11
0
 private static bool findreadedmsg(MsgInfo.MsgInfo info)
 {
     return(info.Ver.Equals("readed"));
 }
Exemplo n.º 12
0
 private static bool findremovesendedimgpart(MsgInfo.MsgInfo info)
 {
     return(info.InfoType.Equals(_removesendedguid) || info.InfoGuid.Equals(_removesendedguid));
 }
Exemplo n.º 13
0
 private static bool findsendedimgpart(MsgInfo.MsgInfo info)
 {
     return(info.InfoType.Equals(_sendedguid) && info.SendInfo.StartsWith(_sendedindex));
 }
Exemplo n.º 14
0
 private static bool findremoveimg(MsgInfo.MsgInfo info)
 {
     return(info == null || info.InfoType.Equals(_removeguid));
 }