bool isRunning = true;
MouseKeyBoard mk = new MouseKeyBoard();
void InitTcpServer(int port) { Thread t = new Thread(() => { TcpListener listener = new TcpListener(IPAddress.Any, port); listener.Start(); Log("監聽:" + port); while (isRunning) { var tcpClient = listener.AcceptTcpClient(); try { Thread t2 = new Thread(() => { NetworkStream clientStream = tcpClient.GetStream(); while (isRunning) { try { if (!clientStream.DataAvailable) { Thread.Sleep(100); //否則死循環,cpu占用超高 continue; } byte[] buffer = new byte[tcpClient.Available]; //new byte[clientStream.Length]; //報錯此流不支持查找 int readBytes = 0; readBytes = clientStream.Read(buffer, 0, buffer.Length); clientStream.Flush(); string request = Encoding.UTF8.GetString(buffer).Trim(); Log(request); if (request.StartsWith("SetTime|")) { var str = DateTime.Parse(request.Substring(8)).ToString("yyyyMMdd") + DateTime.Now.ToString("HHmmss"); SetLocalTimeByStr(str); clientStream.Flush(); clientStream.Write(Encoding.Default.GetBytes("ok"), 0, 2); //發送給客戶端 clientStream.Flush(); } else if (request.StartsWith("MouseClick|")) { var arr = request.Split('|'); if (arr.Length >= 2) { mk.MouseClick(arr[1]); } } else if (request.StartsWith("ShutDown|")) { ExecuteCmd("shutdown -s -t 120"); } else if (request.StartsWith("CancelShutDown|")) { ExecuteCmd("shutdown -a"); }else if (request.StartsWith("SendString")) { var arr = request.Split('|'); if (arr.Length >= 2) { string str = arr[1]; this.button1.BeginInvoke(new Action(() => { mk.SendKeys(str); })); } } } catch (Exception ex) { Log("ex|" + ex.Message + ex.StackTrace); } Thread.Sleep(100); } }); t2.Start(); } catch (Exception ex2) { Log("ex2|" + ex2.Message + ex2.StackTrace); } Thread.Sleep(100); } }); t.Start(); }
private void button2_Click(object sender, EventArgs e) { tcpClient.Connect(new IPEndPoint(IPAddress.Parse("192.168.0.168"), Convert.ToInt32(this.textBox2.Text.Trim()))); MessageBox.Show("連接成功."); } private void button1_Click(object sender, EventArgs e) { Thread t = new Thread(() => { NetworkStream clientStream = tcpClient.GetStream(); string request = "SetTime|" + this.textBox1.Text.Trim(); byte[] requestBuffer = Encoding.Default.GetBytes(request); clientStream.Write(requestBuffer, 0, requestBuffer.Length); clientStream.Flush(); var buffer = new byte[1024]; while (isRunning) { clientStream.Read(buffer, 0, buffer.Length); string str = Encoding.Default.GetString(buffer).Trim(); if (str.StartsWith("ok")) { Invoke(() => { MessageBox.Show("修改時間成功."); }); } Thread.Sleep(100); } }); t.Start(); this.button1.Enabled = false; }