Tcplistener/tcpclient await останавливает код после запуска ⇐ C#
-
Гость
Tcplistener/tcpclient await останавливает код после запуска
Этот код выводит «8096» 13 раз, как ожидалось (ceil(100,000/8096) = 13)
Но затем после цикла while в обеих функциях ничего не запускается, кроме завершения программы, две строки console.writlelines после них не запускаются (печать работает до этого, но не после цикла while)
Вот мой код:
Функция TCPclient:
public static async void Main() { использование клиента TcpClient = new TcpClient("localhost",50000); используя поток NetworkStream = client.GetStream(); данные byte[] = RandomNumberGenerator.GetBytes(100000); ждут поток.WriteAsync(данные,0,data.Length); байт[] байты = новый байт[8096]; интервал я; while((i = awaitstream.ReadAsync(bytes, 0, bytes.Length))>0) { Console.WriteLine(я); } Console.WriteLine("это не печатается"); клиент.Закрыть(); возвращаться; } функция tcplistener:
public static async void Main() { пытаться { Сервер TcpListener = новый TcpListener(IPAddress.Any,50000); сервер.Старт(); использование клиента TcpClient = await server.AcceptTcpClientAsync(); используя поток NetworkStream = client.GetStream(); байт[] байты = новый байт[8096]; байт[] return_bytes = новый байт[8096]; интервал я; while((i = awaitstream.ReadAsync(bytes, 0, bytes.Length))>0) { ждут потока.WriteAsync(return_bytes,0,return_bytes.Length); } Console.WriteLine("это не печатается"); клиент.Закрыть(); сервер.Стоп(); } поймать (исключение ex) { Console.WriteLine("порт уже используется"); } } Пытался сделать это синхронным и объединить в потоки, но это не сработало
Этот код выводит «8096» 13 раз, как ожидалось (ceil(100,000/8096) = 13)
Но затем после цикла while в обеих функциях ничего не запускается, кроме завершения программы, две строки console.writlelines после них не запускаются (печать работает до этого, но не после цикла while)
Вот мой код:
Функция TCPclient:
public static async void Main() { использование клиента TcpClient = new TcpClient("localhost",50000); используя поток NetworkStream = client.GetStream(); данные byte[] = RandomNumberGenerator.GetBytes(100000); ждут поток.WriteAsync(данные,0,data.Length); байт[] байты = новый байт[8096]; интервал я; while((i = awaitstream.ReadAsync(bytes, 0, bytes.Length))>0) { Console.WriteLine(я); } Console.WriteLine("это не печатается"); клиент.Закрыть(); возвращаться; } функция tcplistener:
public static async void Main() { пытаться { Сервер TcpListener = новый TcpListener(IPAddress.Any,50000); сервер.Старт(); использование клиента TcpClient = await server.AcceptTcpClientAsync(); используя поток NetworkStream = client.GetStream(); байт[] байты = новый байт[8096]; байт[] return_bytes = новый байт[8096]; интервал я; while((i = awaitstream.ReadAsync(bytes, 0, bytes.Length))>0) { ждут потока.WriteAsync(return_bytes,0,return_bytes.Length); } Console.WriteLine("это не печатается"); клиент.Закрыть(); сервер.Стоп(); } поймать (исключение ex) { Console.WriteLine("порт уже используется"); } } Пытался сделать это синхронным и объединить в потоки, но это не сработало
Мобильная версия