使用asyn和await的.net 4.5中的异步TCP服务器,正在发生数据丢失

我必须使用async来实现asnet tcp在.net 4.5中的服务并通过引用我实现服务器的链接来等待

我的服务器代码如下

public class AsyncEchoServer { private int _listeningPort; public AsyncEchoServer( int port) { _listeningPort = port; } public async void Start() { IPAddress ipAddre = IPAddress.Parse("192.168.2.4"); TcpListener listener = new TcpListener(ipAddre, _listeningPort); listener.Start(); LogMessage("Server is running"); while (true) { try { var tcpClient = await listener.AcceptTcpClientAsync(); HandleConnectionAsync(tcpClient); } catch (Exception exp) { LogMessage(exp.ToString()); } } } private async void HandleConnectionAsync(TcpClient tcpClient) { string clientInfo = tcpClient.Client.RemoteEndPoint.ToString(); try { using (var networkStream = tcpClient.GetStream()) using (var reader = new StreamReader(networkStream)) using (var writer = new StreamWriter(networkStream)) { writer.AutoFlush = true; while (true) { var dataFromServer = await reader.ReadLineAsync(); if (string.IsNullOrEmpty(dataFromServer)) { break; } LogMessage(dataFromServer ); await writer.WriteLineAsync("FromServer-" + dataFromServer); } } } catch (Exception exp) { LogMessage(exp.Message); } finally { tcpClient.Close(); } } private void LogMessage(string message, [CallerMemberName]string callername = "") { System.Console.WriteLine("[{0}] - Thread-{1}- {2}",callername, Thread.CurrentThread.ManagedThreadId, message); //System.Console.WriteLine(message); } 

我正在使用Jmeter TCP Sample进行测试,在此我创建了一个200个Thread组,它在每个特定的时间间隔后将数据发送到服务器。

当我在所有线程组中提到非常小的字符串如“1”,“HI1”时它工作得很好但问题是当我提到一些大字符串时说800-900个字符,数据丢失发生只显示部分数据和从200个客户端多次只有24~25个客户端数据显示在控制台上

这是JMeter字符串的快照

JMeter TCP示例

任何人都可以建议应该是什么问题。

提前致谢。