Example #1
0
 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);
 }
Example #2
0
 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);
 }
Example #3
0
        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;
            }
            }
        }