Одновременное подключение несколько клиентов к одному серверу - C#

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

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

Столкнулся с задачей. Есть сервер, который отправляет xml сообщения на клиент. Нужно сделать чтобы могло подключиться несколько клиентов к моему серверу. Чтобы они все получали мои файлы. Делал вот так:
Листинг программы
  1. // Создаем TCP сервер и слушаем запросы клиентов
  2. TcpListener server = new TcpListener(IPAddress.Any,11000);
  3. server.Start();
  4. // Проверяем, есть ли клиенты
  5. while (true)
  6. {
  7. server.AcceptTcpClient();
  8. Console.WriteLine("...Подключен клиент...");
  9. }
отправляю вот так:
Листинг программы
  1. byte[] xml = File.ReadAllBytes(string.Format(tb_xml_name.Text + "\\" + "F000{0}.xml", xml_filename));
  2. s.Send(xml);
  3. s.Close();
Отправка происходит после формирования xml файла. Нужно каждый подключившийся клиент, при помощи массива записывать и при помощи массива каждому клиенту отправлять сообщение. Помогите пожалуйста, как это реализовать в коде? Когда был один клиент, делал через сокет соединение. Заранее спасибо! )

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

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net.Sockets;
  6. using System.Net;
  7. using System.Windows.Forms;
  8. using System.Threading;
  9. using System.IO;
  10.  
  11. namespace ServerInput
  12. {
  13.     public class ClientConnection
  14.     {
  15.         public Socket connection;
  16.         private NetworkStream socketStream;
  17.         private BinaryReader reader;
  18.         private BinaryWriter writer;
  19.  
  20.         public string ip_server;
  21.  
  22.         public ClientConnection(Socket _connection)
  23.         {
  24.             connection = _connection;
  25.             socketStream = new NetworkStream(connection);
  26.             reader = new BinaryReader(socketStream);
  27.             writer = new BinaryWriter(socketStream);
  28.             ip_server = ((IPEndPoint)connection.LocalEndPoint).Address.ToString();
  29.             Send("Server (" + ip_server + "): успешное подключение \n"); //отправляем клиенту сообщение об подключении
  30.             Thread startListen = new Thread(new ThreadStart(Receive));
  31.             startListen.Start();
  32.         }
  33.  
  34.  
  35.         public void Stop()
  36.         {
  37.             writer.Close();
  38.             reader.Close();
  39.             socketStream.Close();
  40.             connection.Close();
  41.         }
  42.  
  43.         //отправляем данные на клиент
  44.         public void Send(string str)
  45.         {
  46.             try
  47.             {
  48.                 writer.Write(str);
  49.             }
  50.             catch (SocketException e)
  51.             {
  52.                 MessageBox.Show(e.ToString());
  53.             }
  54.             catch (Exception e)
  55.             {
  56.                 MessageBox.Show(e.ToString());
  57.             }
  58.         }
  59.  
  60.         //получаем данные на сервер (постоянно)
  61.         public void Receive()
  62.         {
  63.             try
  64.             {
  65.                 string theReply = "";
  66.                 do
  67.                 {
  68.                     try
  69.                     {
  70.                         theReply = reader.ReadString();
  71.                         //здесь обрабатываем полученное сообщение
  72.                     }
  73.                     catch (IOException e)
  74.                     {
  75.                         SocketException ee = (SocketException)e.InnerException;
  76.                         if (ee.ErrorCode == 10053) //обрабатываем исключение при выключении сервера
  77.                         {
  78.                             return;
  79.                         }
  80.                     }
  81.                     catch (Exception e)
  82.                     {
  83.                     }
  84.                 }
  85.                 while (connection.Connected);
  86.                 Stop();
  87.             }
  88.             catch
  89.             {
  90.             }
  91.         }
  92.     }
  93. }

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


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

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

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

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

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

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