/// <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); }
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); } }
private static bool findfilebyguid(MsgInfo.MsgInfo info) { try { return(info.InfoGuid.Equals(_fileguid)); } catch { return(false); } }
/// <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 }); }
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); }
/// <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); // } //} }
/// <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); }
/// <summary> /// 转发内网外网消息 /// </summary> /// <param name="info"></param> public static void turnMsgInLanAndNet(MsgInfo.MsgInfo info) { }
/// <summary> /// 发送重请的包 /// </summary> /// <param name="info"></param> public static void sendFilePackIndex(MsgInfo.MsgInfo info) { }
public UIMsgs(MsgInfo.MsgInfo msg, System.Net.IPEndPoint addr) { info = msg; iep = addr; }
private static bool findreadedmsg(MsgInfo.MsgInfo info) { return(info.Ver.Equals("readed")); }
private static bool findremovesendedimgpart(MsgInfo.MsgInfo info) { return(info.InfoType.Equals(_removesendedguid) || info.InfoGuid.Equals(_removesendedguid)); }
private static bool findsendedimgpart(MsgInfo.MsgInfo info) { return(info.InfoType.Equals(_sendedguid) && info.SendInfo.StartsWith(_sendedindex)); }
private static bool findremoveimg(MsgInfo.MsgInfo info) { return(info == null || info.InfoType.Equals(_removeguid)); }