Программа по оптимизации передачи данных через сервер

Автор работы: Пользователь скрыл имя, 20 Августа 2013 в 23:24, дипломная работа

Описание работы

Актуальность моей работы заключается в создании инструмента для разработки приложений, связанных между собой по сети и работающих как единая система.
Сейчас распространена клиент-серверная сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), называемыми серверами, и заказчиками услуг, называемыми клиентами. Нередко клиенты и серверы взаимодействуют через компьютерную сеть и могут быть как различными физическими устройствами, так и программным обеспечением.

Содержание работы

Введение 3
Глава 1. Оптимизация приложений 6
1.1 Механизмы оптимизации 6
1.2 Архитектурный принцип построения сетей 9
1.3 Пропускная способность сети 11
1.4 Поток данных 12
1.5 Гибридные сети 20
1.6 Брэндмауэр Windows 22
1.7 Отличие С# от Java 24
1.8 JSON. Передача объектов 36
Глава 2. Программная часть 38
2.1 Среда разработки 38
2.2 Язык программирования 39
2.3 Диаграммы классов 40
2.4 Диаграммы взаимодействия 43
2.5 Алгоритм работы 45
2.6 Интерфейс приложения 47
Заключение 49
Список использованной литературы 50

Файлы: 1 файл

Диплом.docx

— 1.24 Мб (Скачать файл)

            if (clientPanels.Values[index] != null)

            {

                Controls.Remove(clientPanel);

                clientPanel = clientPanels.Values[index];

                Controls.Add(clientPanel);

            }

            else

            {

                var panel = new ClientPanel(clientPanel, clientInfo);

                panel.Tag = listViewClients.SelectedItems[0].Tag;

                clientPanels[clientInfo] = panel;

                Controls.Remove(clientPanel);

                clientPanel = panel;

                Controls.Add(clientPanel);

            }

        }

 

//при выходе закрываем  сокеты, чтоб не висели

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            NetClient.Stop();

        }

 

        #endregion

 

        #region internal

 

        private void ShowSaveFileDialog(ClientInfo clientInfo, string fname)

        {

            InvokeCall(this, () =>

                {

                    var dialog = new SaveFileDialog();

                    dialog.Title = @"Входящий файл от " + clientInfo.Name;

                    dialog.FileName = fname;

                    if (dialog.ShowDialog() == DialogResult.OK)

                    {

                        receiveFile = true;

                        if (File.Exists(dialog.FileName))

                           File.Delete(dialog.FileName);

                        receiveFileName = dialog.FileName;

                    }

                });

        }

 

        private void ProcessClientList(List<ClientInfo> clientList)

        {

            if (clientList == null)

                return;

 

            foreach (ClientInfo client in clientList)

            {

                int index = clientPanels.IndexOfKey(client);

                if (index < 0)

                    clientPanels.Add(client, null);

                else

                    clientPanels.Keys[index].IsAlive = client.IsAlive;

            }

            UpdateListViewItems();

        }

 

//если изменилась информация о доступности клиентов - то обновляем клиент-лист на форме

        private void UpdateListViewItems()

        {

            var clientItems = new List<ListViewItem>();

            foreach (var client in clientPanels)

            {

                var item = new ListViewItem();

                item.Tag = client.Key;

                item.Text = client.Key.Name;

                item.Group = client.Key.IsAlive

                                 ? listViewClients.Groups["Online"]

                                 : listViewClients.Groups["Offline"];

                clientItems.Add(item);

            }

            InvokeCall(listViewClients, () => listViewClients.Items.Clear());

            InvokeCall(listViewClients, () => listViewClients.Items.AddRange(clientItems.ToArray()));

        }

 

        private void InvokeCall(Control control, Action action)

        {

            if (control.InvokeRequired)

                Invoke(action);

            else

                action();

        }

 

        #endregion

 

        private void Form1_Load(object sender, EventArgs e)

        {

 

        }

    }

}

 

Приложение 3. Настройки клиента Settings.cs

using System;

using System.IO;

using System.Text;

using System.Windows.Forms;

using System.Xml;

 

namespace Client

{

    static class Settings

    {

        public static int MessagePort = 10000;

        public static int FilePort = MessagePort + 1;

        public static string ServerHost = "localhost";

        public static int ServerPort = 9999;

        public static string Name = "Client";

 

        private static string fname = Environment.CurrentDirectory + "\\Settings.xml";

 

//ищет файл настроек, если он найден - то пытается  их загрузить.

//если загрузка  неуспешна, то остаются значения  по умолчанию

        static Settings()

        {

            if (!File.Exists(fname))

            {

                //создаем настройки по умолчанию

                Save();

                return;

            }

               

            try

            {

                using (XmlTextReader reader = new XmlTextReader(fname))

                {

                    reader.WhitespaceHandling = WhitespaceHandling.None;

                    while (reader.Read())

                    {

                        if (reader.NodeType == XmlNodeType.Element)

                            if (reader.Name.Equals("Settings", StringComparison.OrdinalIgnoreCase))

                                while (reader.Read())

                                {

                                    if (reader.IsStartElement("MessagePort"))

                                    {

                                        string value = reader.ReadString();

                                        int port = MessagePort;

                                        if (int.TryParse(value, out port))

                                            MessagePort = port;

                                    }

                                    else if (reader.IsStartElement("FilePort"))

                                    {

                                        string value = reader.ReadString();

                                        int port = FilePort;

                                        if (int.TryParse(value, out port))

                                            FilePort = port;

                                    }

                                    else if (reader.IsStartElement("Name"))

                                    {

                                        string value = reader.ReadString();

                                        if (!string.IsNullOrEmpty(value) && !string.IsNullOrWhiteSpace(value))

                                            Name = value;

                                    }

                                    else if (reader.IsStartElement("Server"))

                                    {

                                        while (reader.Read())

                                        {

                                            if (reader.IsStartElement("ServerHost"))

                                                ServerHost = reader.ReadString();

                                            else if (reader.IsStartElement("ServerPort"))

                                            {

                                                string value = reader.ReadString();

                                                int port = ServerPort;

                                                if (int.TryParse(value, out port))

                                                    ServerPort = port;

                                            }

                                        }

                                    }

                                }

                    }

                }

            }

            catch

            {

                MessagePort = 10000;

                FilePort = MessagePort + 1;

                ServerHost = "localhost";

                ServerPort = 9999;

                MessageBox.Show(@"Проверьте файл настроек, загружены настройки по умолчанию", @"Ошибка",

                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            }

        }

 

        // сохраняет все измененные настройки в XML

public static void Save()

        {

            try

            {

                using (XmlWriter writer = new XmlTextWriter(fname, new UTF8Encoding()))

                {

                    writer.WriteStartDocument();

                    writer.WriteStartElement("Settings");

                    writer.WriteElementString("MessagePort", MessagePort.ToString());

                    writer.WriteElementString("FilePort", FilePort.ToString());

                    writer.WriteElementString("Name", Name);

                    writer.WriteStartElement("Server");

                    writer.WriteElementString("ServerHost", ServerHost);

                    writer.WriteElementString("ServerPort", FilePort.ToString());

                    writer.WriteEndElement();

                    writer.WriteEndElement();

                }

            }

            catch (Exception e)

            {

                MessageBox.Show(@"Ошибка сохранения настроек!" + Environment.NewLine + e.Message, @"Ошибка",

                                MessageBoxButtons.OK, MessageBoxIcon.Error);

            }

        }

 

    }

 

}

1 http://ru.wikipedia.org/wiki/TCP/IP

2 http://ru.wikipedia.org/wiki/TCP/IP

3 http://www.ixbt.com/comm/tech-fast-ethernet.shtml

4 http://ru.wikipedia.org/wiki

5 http://www.csharpblog.ru/node/49

6 http://ru.wikipedia.org/wiki/C_Sharp

Воронеж 2013

 


Информация о работе Программа по оптимизации передачи данных через сервер