Skip to content

Instantly share code, notes, and snippets.

@ayende
Created July 2, 2016 19:24
Show Gist options
  • Save ayende/0258487caf8815e831ce19e6c99930e5 to your computer and use it in GitHub Desktop.
Save ayende/0258487caf8815e831ce19e6c99930e5 to your computer and use it in GitHub Desktop.
class Program
{
static void Main(string[] args)
{
Sync();
Async().Wait();
}
const int len = 1024 * 16;
static void Sync()
{
var tcpListener = new TcpListener(IPAddress.Loopback, 9999);
tcpListener.Start();
var listenerThread = new Thread(() =>
{
var buffer = new byte[1024];
var client = tcpListener.AcceptTcpClient();
var sp = Stopwatch.StartNew();
using (var stream = client.GetStream())
{
while (true)
{
var read = stream.Read(buffer, 0, 1024);
if (read == 0)
break;
}
Console.WriteLine(sp.Elapsed);
}
});
listenerThread.Start();
var tcpClient = new TcpClient();
var sendBuffer = new byte[1024];
new Random().NextBytes(sendBuffer);
tcpClient.Connect(new IPEndPoint(IPAddress.Loopback, 9999));
using (var sendStream = tcpClient.GetStream())
{
for (int i = 0; i < len; i++)
{
sendStream.Write(sendBuffer, 0, 1024);
}
}
listenerThread.Join();
tcpListener.Stop();
}
static async Task Async()
{
var tcpListener = new TcpListener(IPAddress.Loopback, 9999);
tcpListener.Start();
var listernerTask = Task.Run(async () =>
{
var buffer = new byte[1024];
var client = await tcpListener.AcceptTcpClientAsync();
var sp = Stopwatch.StartNew();
using (var stream = client.GetStream())
{
while (true)
{
var read = await stream.ReadAsync(buffer, 0, 1024);
if (read == 0)
break;
}
Console.WriteLine(sp.Elapsed);
}
});
var tcpClient = new TcpClient();
var sendBuffer = new byte[1024];
new Random().NextBytes(sendBuffer);
await tcpClient.ConnectAsync(IPAddress.Loopback, 9999);
using (var sendStream = tcpClient.GetStream())
{
for (int i = 0; i < len; i++)
{
await sendStream.WriteAsync(sendBuffer, 0, 1024);
}
}
await listernerTask;
tcpListener.Stop();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment