Подключение нескольких клиентов одновременно - C#

Узнай цену своей работы

Формулировка задачи:

Есть клиент и сервер. Клиент передает файл на сервер, всё отлично всё работает. Следующие задание звучит так: Доработать программный комплекс из задачи №2 для обеспечения возможности подключения нескольких клиентов одновременно. Помимо отправки сообщения должна быть предусмотрена возможность передачи управляющих воздействий. Объясните, что надо сделать. От разных клиентов посылать разные файлы, которые сохраняются на сервер? Или что? Программы прилагаются

Решение задачи: «Подключение нескольких клиентов одновременно»

textual
Листинг программы
  1. using System;
  2. using System.IO;
  3. using System.Net;
  4. using System.Diagnostics;
  5. using System.Net.Sockets;
  6. using System.Xml.Serialization;
  7. using System.Text;
  8.  
  9. public class UdpFileClient
  10. {
  11.     //Детали файла
  12.     [Serializable]
  13.     public class FileDetails
  14.     {
  15.         public string FILETYPE = "";
  16.         public long FILESIZE = 0;
  17.     }
  18.     private static FileDetails fileDet;
  19.  
  20.     //Поля, связанные с UdpClient
  21.     private static int localPort = 5002;
  22.     private static UdpClient receivingUdpClient = new UdpClient(localPort);
  23.     private static IPEndPoint RemoteIpEndPoint = null;
  24.  
  25.     private static FileStream fs;
  26.     private static Byte[] receiveBytes = new Byte[0];
  27.  
  28.     [STAThread]
  29.     static void Main(string[] args)
  30.         {
  31.             //Получаем информацию о файле
  32.             GetFileDetails();
  33.             //Получаем файл
  34.             ReceiveFile();
  35.         }
  36.     private static void GetFileDetails()
  37.     {
  38.         try
  39.         {
  40.             Console.WriteLine("----------Ожидание информации о файле----------");
  41.  
  42.             //Получаем информацию о файле
  43.             receiveBytes = receivingUdpClient.Receive(ref RemoteIpEndPoint);
  44.             Console.WriteLine("Информация о файле получена");
  45.  
  46.             XmlSerializer fileSerializer = new XmlSerializer(typeof(FileDetails));
  47.             MemoryStream stream1 = new MemoryStream();
  48.  
  49.             //Считываем информацию о файле
  50.             stream1.Write(receiveBytes, 0, receiveBytes.Length);
  51.             stream1.Position = 0;
  52.  
  53.             //Вызываем метод Deserialize
  54.             fileDet = (FileDetails)fileSerializer.Deserialize(stream1);
  55.             Console.WriteLine("Получен файл типа ." + fileDet.FILETYPE +
  56.                 "имеющий размер" + fileDet.FILESIZE.ToString() + "байт");
  57.         }
  58.         catch (Exception eR)
  59.         {
  60.             Console.WriteLine(eR.ToString());
  61.         }
  62.     }
  63.     public static void ReceiveFile()
  64.     {
  65.         try
  66.         {
  67.             Console.WriteLine("----------Ожидайте получение файла----------");
  68.            
  69.             //Получаем файл
  70.             receiveBytes = receivingUdpClient.Receive(ref RemoteIpEndPoint);
  71.  
  72.             //Преобразуем и отображаем данные
  73.             Console.WriteLine("-----Файл получен-----");
  74.  
  75.             //Создаем временный файл с полученным расширением
  76.             fs = new FileStream("temp." + fileDet.FILETYPE, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
  77.             fs.Write(receiveBytes, 0, receiveBytes.Length);
  78.  
  79.             Console.WriteLine("---Файл сохранен---");
  80.             Console.WriteLine("--Открытие файла--");
  81.  
  82.             //Открываем файл связанной с ним программой
  83.             Process.Start(fs.Name);
  84.         }
  85.         catch (Exception eR)
  86.         {
  87.             Console.WriteLine(eR.ToString());
  88.         }
  89.         finally
  90.         {
  91.             fs.Close();
  92.             receivingUdpClient.Close();
  93.             Console.Read();
  94.         }
  95.     }
  96. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.455 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы