Как в клиенте организовать метод Send, чтобы он не создавал нового клиента каждый раз - C#
Формулировка задачи:
Начал изучать TCP. Решил написать клиет-серверный чат...начало пока такое:
Сервер:
Клиент:
Как в клиенте организовать метод Send, чтобы он не создавал нового клиента каждый раз, а использовал уже установленное подключение?
блин, хочется, чтобы у класса TcpClient было событие "данные отправлены" и на сервере его обрабатывать...и событие "данные приняты", чтобы обрабатывать это событие на клиенте)
Листинг программы
- public class Server
- {
- private HashSet<TcpClient> Clients = new HashSet<TcpClient>();
- public async void RunServerAsync()
- {
- var listener = new TcpListener(IPAddress.Any, 5000);
- listener.Start();
- try
- {
- while (true)
- {
- var client = listener.AcceptTcpClient();
- Console.WriteLine("Кто-то подключился");
- Clients.Add(client);
- Accept(client);
- }
- }
- finally
- {
- listener.Stop();
- }
- }
- private async Task Accept(TcpClient client)
- {
- await Task.Yield();
- using (var stream = client.GetStream())
- {
- string msg = new BinaryReader(stream).ReadString();
- Broadcast(msg, client);
- }
- }
- private void Broadcast(string msg, TcpClient sender)
- {
- Console.WriteLine(msg);//пока так
- }
- }
Листинг программы
- public class Client
- {
- private string _ServerName;
- private int _ServerPort;
- public Client(string serverName, int serverPort)
- {
- _ServerName = serverName;
- _ServerPort = serverPort;
- StartReceive();
- }
- public void Send(string message)
- {
- using (var Clnt = new System.Net.Sockets.TcpClient(_ServerName, _ServerPort))
- {
- using (var Strm = Clnt.GetStream())
- {
- var Writer = new BinaryWriter(Strm);
- Writer.Write(message);
- Writer.Flush();
- }
- }
- }
- private async void StartReceive()
- {
- return;
- }
- public void Dispose()
- {
- }
- }
Решение задачи: «Как в клиенте организовать метод Send, чтобы он не создавал нового клиента каждый раз»
textual
Листинг программы
- await stream.ReadAsync(bytes, 0, bytes.Length);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д