/// <summary> /// 鼠标移动事件 /// </summary> /// <param name="x"></param> /// <param name="y"></param> public void SendMouseMove(int type, int x, int y, int dw, int info) { if (IsSession && Status == 2) { MqttClient?.Request(OtherCommidStr, Package_0x06(type, x, y, dw, info)); } }
/// <summary> /// 设置压缩率 /// </summary> /// <param name="flag"></param> /// <param name="level"></param> public void SetCompressLevel(bool flag, int level) { if (IsSession && Status == 2) { MqttClient?.Request(OtherCommidStr, Package_0x03(flag, level)); } }
/// <summary> /// 发送远程按键 /// </summary> /// <param name="key"></param> /// <param name="flag"></param> public void SendKey(byte key, byte flag) { if (IsSession && Status == 2) { MqttClient?.Request(OtherCommidStr, Package_0x05(key, flag)); } }
/// <summary> /// 退出会话 /// </summary> public void SessionClose() { if (IsSession && Status == 2) { MqttClient?.Request(OtherCommidStr, Package_0x04()); Status = 0; IsSession = false; } }
/// <summary> /// 发起请求 /// </summary> /// <param name="pwd"></param> public void Conn(string pwd) { MqttClient?.Request(OtherCommidStr, Package_0x07(pwd)); }
/// <summary> /// 查询服务器在线状态 /// </summary> /// <param name="otherid"></param> public void Check(uint otherid) { MqttClient?.Request(Package_0x01(otherid.GetBytes())); OtherCommid = otherid.GetBytes(); OtherCommidStr = otherid.ToString(); }
private void MqttClient_RcvDataEvent(byte[] data) { try { if (data?.Length > 0) { switch (data[0]) { case 0x00: if (CommID.ToHexString() != data.SubArray(1, 4).ToHexString()) { MqttClient.Unsubscribe(CommID.GetInt().ToString()); MqttClient.Subscribe(data.SubArray(1, 4).GetInt().ToString()); } CommID = data.SubArray(1, 4); Password = data.SubArray(6, data[5]).ToASCIIString(); break; case 0x01: SelectServerEvent?.BeginInvoke(data[1], null, null); break; case 0x02: RcvImageEvent?.BeginInvoke(data.SubArray(1, data.Length - 1).Bytes2BitMap(), null, null); break; case 0x03: IsCompression = data[1] == 1; CompressionLevel = data[2]; break; case 0x04: IsSession = false; Status = 0; break; case 0x05: RcvKeyEvent?.BeginInvoke(data[1], data[2], null, null); break; case 0x06: int type = (data[1] << 8) | data[2]; int x = (data[3] << 8) | data[4]; int y = (data[5] << 8) | data[6]; int dw = (data[7] << 24) | (data[8] << 16) | (data[9] << 8) | data[10]; int info = (data[11] << 24) | (data[12] << 16) | (data[13] << 8) | data[14]; MouseMoveEvent?.BeginInvoke(type, x, y, dw, info, null, null); break; case 0x07: if (data.Length > 2) { string pwd = data.SubArray(6, data[5]).ToASCIIString(); OtherCommid = data.SubArray(1, 4); OtherCommidStr = OtherCommid.GetInt().ToString(); if (pwd == Password) { MqttClient?.Request(OtherCommidStr, new byte[] { 0x07, 0x00 }); IsSession = true; Status = 1; Conn1Event?.BeginInvoke(null, null); } else { MqttClient?.Request(OtherCommidStr, new byte[] { 0x07, 0x01 }); } } else { if (data[1] == 0x00) { Status = 2; IsSession = true; } Conn2Event?.Invoke(data[1]); } break; } } } catch (Exception ex) { Console.WriteLine(ex.Message + "****" + ex.StackTrace); } }