private void ByteMessage(NFTServer.ServerControl Control, byte[] Message) { byte[] textbuffer = new byte[1 + Message.Length]; textbuffer[0] = (byte)Control; Message.CopyTo(textbuffer, 1); HandSocket.Send(textbuffer); }
private void TextMessage(Socket MessageSocket, NFTServer.ServerControl Control, string Message) { //these code is based on "ErrorMessage" function byte[] text = System.Text.Encoding.Default.GetBytes(Message); byte[] textbuffer = new byte[1 + text.Length]; textbuffer[0] = (byte)Control; text.CopyTo(textbuffer, 1); MessageSocket.Send(textbuffer); }
private void MessageHandle(NFTServer.ServerControl Control, byte[] Message, int MessageCount) { switch (Control) { case NFTServer.ServerControl.DBUG: { Console.WriteLine(Encoding.Default.GetString(Message, 1, MessageCount)); break; } case NFTServer.ServerControl.ERRO: { ErrorHandle(); CloFunc.Errorinfo(ByteEncoding(Message, MessageCount)); break; } case NFTServer.ServerControl.TEXT: { ConsoleMessage(ByteEncoding(Message, MessageCount)); break; } case NFTServer.ServerControl.LIST: { MessageTemp += ByteEncoding(Message, MessageCount); break; } case NFTServer.ServerControl.CDCD: { Config.serverpath = ByteEncoding(Message, MessageCount); break; } case NFTServer.ServerControl.LEND: { state.list = false; ConsoleMessage(MessageTemp); MessageTemp = ""; break; } case NFTServer.ServerControl.DDEL: { //state.deldir = false; ConsoleMessage(ByteEncoding(Message, MessageCount)); break; } case NFTServer.ServerControl.DLFL: { if (state.download) { string filename = ByteEncoding(Message, MessageCount); TextMessage(HandSocket, NFTServer.ServerControl.FSTT, filename); } break; } case NFTServer.ServerControl.ULFL: { if (state.upload) { string filename = ByteEncoding(Message, MessageCount); Config.FileLength = fp.Length; tempLength = 0; TextMessage(HandSocket, NFTServer.ServerControl.FSTT, fp.Length.ToString()); //////////////////////////////////////// long count = (Config.FileLength + 2046) / 2047; byte[] messagebuff = new byte[2047]; byte[] finalmessage = new byte[(int)(fp.Length % 2047)]; Console.Write("Process:{0} / {1}", tempLength, Config.FileLength); //Console.CursorVisible = false; for (long i = 0; i < count; ++i) { if (i != count - 1) { tempLength += 2047; fp.Read(messagebuff, 0, 2047); ByteMessage(NFTServer.ServerControl.FILE, messagebuff); } else { tempLength += finalmessage.Length; fp.Read(finalmessage, 0, finalmessage.Length); ByteMessage(NFTServer.ServerControl.FEND, finalmessage); } //Console.SetCursorPosition(0, Console.CursorTop); Console.Write("Process:{0} / {1}", tempLength, Config.FileLength); } //Console.SetCursorPosition(0, Console.CursorTop); Console.WriteLine("Process:{0} / {1}", tempLength, Config.FileLength); //Console.CursorVisible = true; //TextMessage(HandSocket, NFTServer.ServerControl.FEND, "FL END"); state.upload = false; fp.Close(); } break; } case NFTServer.ServerControl.FSTT: { if (state.download) { Config.FileLength = long.Parse(ByteEncoding(Message, MessageCount)); //Console.CursorVisible = false; tempLength = 0; Console.Write("Process:{0} / {1}", tempLength, Config.FileLength); } else if (state.upload) { /////// } /////////// break; } case NFTServer.ServerControl.FILE: { if (state.download) { fp.Write(Message, 1, MessageCount); //Console.SetCursorPosition(0, Console.CursorTop); tempLength += MessageCount; ////////////////////////////////////// if (tempLength == Config.FileLength) { state.download = false; } ////////////////////////////////////// Console.Write("Process:{0} / {1}", tempLength, Config.FileLength); } break; } case NFTServer.ServerControl.FEND: { if (state.download) { fp.Write(Message, 1, MessageCount); tempLength += MessageCount; fp.Close(); state.download = false; //Console.SetCursorPosition(0, Console.CursorTop); //tempLength += MessageCount; Console.WriteLine("Process:{0} / {1}", tempLength, Config.FileLength); //Console.CursorVisible = true; } break; } default: { CloFunc.Errorinfo("Unknown Control Head"); break; } } }