问题
I have to implement asyn tcp serve in .net 4.5 using async & await for this by referring the Link I have implemented the server
My server code is as below
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);
}
I am using Jmeter TCP Sample for testing, in this i have created some 200 Thread group which send the data to server after every specific interval.
When I mention very small string like "1", "HI1" in all thread groups it works perfectly fine but the problem is when i mention some big strings let say of 800-900 characters, data loss is happening only partial data is display and many times from 200 clients only 24~25 clients data is displayed on console
Here is the snap of JMeter string
Can anyone please suggest what should be the problem.
Thanks in advance.
来源:https://stackoverflow.com/questions/32450432/async-tcp-server-in-net-4-5-using-asyn-and-await-data-loss-is-happening