Created
July 2, 2016 19:24
-
-
Save ayende/0258487caf8815e831ce19e6c99930e5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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