/// <summary> /// 发送在线状态变化信息 /// </summary> public void SendAbsenceMessage() { ulong options = 0ul; if (Config.IsInAbsenceMode) { options |= (ulong)Consts.Cmd_All_Option.Absence; } if (Config.EnableFileTransfer) { options |= (ulong)Define.Consts.Cmd_All_Option.FileAttach; } //插件 if (Config.Services != null) { Config.Services.ProviderExecute(s => options |= s.GenerateClientFeatures()); } string msg = Config.NickName; if (Config.IsInAbsenceMode) { msg += Config.AbsenceSuffix; } //广播 MessageProxy.SendWithNoCheck(null, Consts.Commands.Br_Absence, options, msg, Config.GroupName); //单个通知 options |= (ulong)Consts.Cmd_All_Option.DialUp; Config.KeepedHostList_Addr.ForEach(s => MessageProxy.SendByIp(new IPEndPoint(s, Config.Port), Consts.Commands.Br_Absence, options, msg, Config.GroupName)); }
/// <summary> /// 发送下线消息 /// </summary> public void SendExitEntryMessage() { ulong options = 0ul; //广播 MessageProxy.SendWithNoCheck(null, Consts.Commands.Br_Exit, options | (ulong)Consts.Cmd_Send_Option.BroadCast, Config.NickName, Config.GroupName); //单个通知 options |= (ulong)Consts.Cmd_All_Option.DialUp; Config.KeepedHostList_Addr.ForEach(s => MessageProxy.SendByIp(new IPEndPoint(s, Config.Port), Consts.Commands.Br_Exit, options, Config.NickName, Config.GroupName)); }
/// <summary> /// 发送消息 /// </summary> /// <param name="host">主机</param> /// <param name="remoteEndPoint">远程主机地址</param> /// <param name="cmd">命令</param> /// <param name="options">选项</param> /// <param name="msg">消息</param> /// <param name="extMsg">扩展消息</param> /// <param name="isBroadCast">是否是广播</param> /// <param name="sendCheck">是否需要确认收到</param> /// <param name="noAddList">是否忽略到主机列表</param> /// <param name="noLog">是否不记录日志</param> /// <param name="isAutoRet">是否是自动回复</param> /// <param name="isEncrypt">是否是加密信息</param> /// <param name="isSecret">是否需要阅读确认</param> /// <param name="noPopup">是否不自动弹出</param> /// <returns>发出去的消息包编号</returns> public ulong SendCommand(Host host, IPEndPoint remoteEndPoint, Consts.Commands cmd, ulong options, string msg, string extMsg, bool isBroadCast, bool sendCheck , bool noAddList, bool noLog, bool isAutoRet, bool isEncrypt, bool isSecret, bool noPopup) { if (isBroadCast) { options |= (ulong)Consts.Cmd_Send_Option.BroadCast; } if (sendCheck) { options |= (ulong)Consts.Cmd_Send_Option.SendCheck; } if (noAddList) { options |= (ulong)Consts.Cmd_Send_Option.NoAddList; } if (noLog) { options |= (ulong)Consts.Cmd_Send_Option.NoLog; } if (isAutoRet) { options |= (ulong)Consts.Cmd_Send_Option.AutoRet; } if (isEncrypt) { options |= (ulong)Consts.Cmd_All_Option.Encrypt; } if (isSecret) { options |= (ulong)Consts.Cmd_Send_Option.Secret; } if (noPopup) { options |= (ulong)Consts.Cmd_Send_Option.NoPopup; } if (sendCheck && host != null) { return(MessageProxy.SendWithCheck(host, cmd, options, msg, extMsg)); } else { if (host == null) { return(MessageProxy.SendByIp(remoteEndPoint, cmd, options, msg, extMsg)); } else { return(MessageProxy.SendWithNoCheck(host, cmd, options, msg, extMsg)); } } }