public void SendData(byte[] data) { if (tcpClient == null || tcpClient.Client == null || !tcpClient.Connected) { return; } if (ns != null) { try { if (ns.CanWrite) { data = Package7E.Pack(data); ns.BeginWrite(data, 0, data.Length, new AsyncCallback(AsyncWriteCallBack), ns); } } catch (IOException ioe) { if (!_isTcpConnected) { return; } } catch (Exception ex) { } } }
/// <summary> /// 观看者身份验证 /// </summary> /// <param name="data"></param> /// <returns></returns> private ResMsg Authentication(byte[] data) { ResMsg rm = new ResMsg(); if (data == null || data.Length == 0) { return(rm); } List <byte[]> cmds = new List <byte[]>(); int removeCount = 0; Package7E.UnPack(data, ref cmds, ref removeCount); for (int i = 0; i < cmds.Count; i++) { JObject msg = JsonConvert.DeserializeObject <JObject>(Encoding.ASCII.GetString(cmds[i])); if (msg != null && msg.ContainsKey("Password") && msg["Password"].ToString() == txt_Password.Text) { rm.Result = true; rm.Message = msg["UserName"].ToString(); break; } } return(rm); }
/// <summary> /// 解析命令线程 /// </summary> private void ParseCmds() { while (shareDesktop) { if (recvBuffer.Count == 0) { Thread.Sleep(5); continue; } try { List <byte[]> cmds = new List <byte[]>(); int removeCount = 0; byte[] buffers; lock (recvBuffer) { buffers = recvBuffer.ToArray(); } Package7E.UnPack(buffers, ref cmds, ref removeCount); if (removeCount > 0) { lock (recvBuffer) { recvBuffer.RemoveRange(0, removeCount); } } for (int i = 0; i < cmds.Count; i++) { try { ExecuteCmd(Encoding.ASCII.GetString(cmds[i])); } catch (Exception ex) { } } } catch (Exception ex) { //Log.Error("RecvFromSlave Error", ex); } Thread.Sleep(5); } }
void RecvFromServer() { TimeSpan ts; while (true) { if (!_loginSuccess) { Thread.Sleep(5); continue; } ts = DateTime.Now - receiveDataStartTime; if (ts.TotalSeconds > 5) { lock (receiveDataBuffer) { receiveDataBuffer.Clear(); } tcpClient.Close(); _isTcpConnected = false; _loginSuccess = false; this.Invoke(new Action(() => { btn_Connect.Text = "连接"; pictureBox1.Image = null; })); Thread.Sleep(5); continue; } if (receiveDataBuffer.Count == 0) { Thread.Sleep(5); continue; } try { List <byte[]> cmds = new List <byte[]>(); int removeCount = 0; byte[] buffers; lock (receiveDataBuffer) { buffers = receiveDataBuffer.ToArray(); } Package7E.UnPack(buffers, ref cmds, ref removeCount); if (removeCount > 0) { lock (receiveDataBuffer) { receiveDataBuffer.RemoveRange(0, removeCount); } } for (int i = 0; i < cmds.Count; i++) { BsonDataReader bsonDataReader = null; try { MemoryStream msShareData = new MemoryStream(cmds[i]); bsonDataReader = new BsonDataReader(msShareData); JsonSerializer jsonSerializer = new JsonSerializer(); ShareData shareData = jsonSerializer.Deserialize <ShareData>(bsonDataReader); switch (shareData.Type) { case "Text": ShowResult(shareData.TextData); break; case "Image": ShowImage(shareData.ImgData); break; default: break; } } catch (Exception ex) { } finally { if (bsonDataReader != null) { bsonDataReader.Close(); } } } } catch (Exception ex) { //Log.Error("RecvFromSlave Error", ex); } Thread.Sleep(5); } }