Esempio n. 1
0
 // Раскрыть пакет.
 public Message Decrypt(byte[] b)
 {
     // Возвращаемое значение.
     Message mes;
     // Строка, полученная из полученного массива байт.
     string str = Encoding.ASCII.GetString(b);
     // Тип сообщений.
     if (str[0] != '\0')
     {
         int type = int.Parse(str[0].ToString());
         int border = str.IndexOf('\0');
         if (border==(-1))
         {
             border = str.Length;
         }
         if (type != -1)
         {
             // Строка данных.
             string assis = str.Substring(1, border - 1);
             // Определение типа сообщения.
             switch (type)
             {
                 case 0:
                     mes = new Inform_of_Down_Message(assis);
                     break;
                 case 1:
                     mes = new Inform_of_Rec_Message(assis);
                     break;
                 case 2:
                     mes = new ListMessage(assis);
                     break;
                 case 3:
                     mes = new RequestMessage(assis);
                     break;
                 case 4:
                     mes = new FilePartMessage(assis);
                     break;
                 case 5:
                     mes = new EndMessage(assis);
                     break;
                 case 6:
                     mes = new ResponseMessage(assis);
                     break;
                 case 7:
                     mes = new ErrorMessage(assis);
                     break;
                 case 8:
                     mes = new HubInformMessage(assis);
                     break;
                 default:
                     mes = new Message(assis);
                     break;
             }
         }
         else
             mes = new Message(string.Empty);
         return mes;
     }
     else
         return new Message(string.Empty);
 }
        // Подключение сервера.
        public static void Start_Hub()
        {
            // Буффер обмена.
            byte[] bytes = new Byte[1024];
            // Буффер дл получения ответа.
            Byte[] data = new Byte[256];
            // Выделение потока для получения списка файлов.
            NetworkStream stream = clnt.GetStream();
            // Сообщение о типе клиента.
            HubInformMessage mes = new HubInformMessage("Hub");
            // Сообщение c именем файла из списка.
            Message LM;

            try
            {
                NW.Send(mes, stream);
                // Прочесть ответ сервера.
                LM = NW.Recieve(stream);

                // Проверить является ли ответ именем файла.
                if (LM is RequestMessage)
                {
                    Send_List(stream);
                    Start_Working(stream);
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine("Unexpected exception : {0}", ex.ToString());
            }
        }