Как в клиенте организовать метод Send, чтобы он не создавал нового клиента каждый раз - C#

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

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

Начал изучать TCP. Решил написать клиет-серверный чат...начало пока такое: Сервер:
Листинг программы
  1. public class Server
  2. {
  3. private HashSet<TcpClient> Clients = new HashSet<TcpClient>();
  4. public async void RunServerAsync()
  5. {
  6. var listener = new TcpListener(IPAddress.Any, 5000);
  7. listener.Start();
  8. try
  9. {
  10. while (true)
  11. {
  12. var client = listener.AcceptTcpClient();
  13. Console.WriteLine("Кто-то подключился");
  14. Clients.Add(client);
  15. Accept(client);
  16. }
  17. }
  18. finally
  19. {
  20. listener.Stop();
  21. }
  22. }
  23.  
  24. private async Task Accept(TcpClient client)
  25. {
  26. await Task.Yield();
  27. using (var stream = client.GetStream())
  28. {
  29. string msg = new BinaryReader(stream).ReadString();
  30. Broadcast(msg, client);
  31. }
  32. }
  33. private void Broadcast(string msg, TcpClient sender)
  34. {
  35. Console.WriteLine(msg);//пока так
  36. }
  37. }
Клиент:
Листинг программы
  1. public class Client
  2. {
  3. private string _ServerName;
  4. private int _ServerPort;
  5. public Client(string serverName, int serverPort)
  6. {
  7. _ServerName = serverName;
  8. _ServerPort = serverPort;
  9. StartReceive();
  10. }
  11. public void Send(string message)
  12. {
  13. using (var Clnt = new System.Net.Sockets.TcpClient(_ServerName, _ServerPort))
  14. {
  15. using (var Strm = Clnt.GetStream())
  16. {
  17. var Writer = new BinaryWriter(Strm);
  18. Writer.Write(message);
  19. Writer.Flush();
  20. }
  21. }
  22.  
  23. }
  24. private async void StartReceive()
  25. {
  26. return;
  27. }
  28.  
  29. public void Dispose()
  30. {
  31. }
  32. }
Как в клиенте организовать метод Send, чтобы он не создавал нового клиента каждый раз, а использовал уже установленное подключение? блин, хочется, чтобы у класса TcpClient было событие "данные отправлены" и на сервере его обрабатывать...и событие "данные приняты", чтобы обрабатывать это событие на клиенте)

Решение задачи: «Как в клиенте организовать метод Send, чтобы он не создавал нового клиента каждый раз»

textual
Листинг программы
  1. await stream.ReadAsync(bytes, 0, bytes.Length);

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


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

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

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

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

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

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