92 lines
3.0 KiB
C#
92 lines
3.0 KiB
C#
using System;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Net.WebSockets;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace TestClient
|
|
{
|
|
public class Program
|
|
{
|
|
private const string Address =
|
|
"http://localhost:5000/public/1kb.txt";
|
|
// "https://localhost:9090/public/1kb.txt";
|
|
|
|
public static void Main(string[] args)
|
|
{
|
|
Console.WriteLine("Ready");
|
|
Console.ReadKey();
|
|
|
|
var handler = new HttpClientHandler();
|
|
handler.MaxConnectionsPerServer = 500;
|
|
handler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;
|
|
// handler.UseDefaultCredentials = true;
|
|
HttpClient client = new HttpClient(handler);
|
|
|
|
RunParallelRequests(client);
|
|
|
|
// RunManualRequests(client);
|
|
|
|
// RunWebSocketClient().Wait();
|
|
|
|
Console.WriteLine("Done");
|
|
// Console.ReadKey();
|
|
}
|
|
|
|
private static void RunManualRequests(HttpClient client)
|
|
{
|
|
while (true)
|
|
{
|
|
Console.WriteLine("Press any key to send request");
|
|
Console.ReadKey();
|
|
var result = client.GetAsync(Address).Result;
|
|
Console.WriteLine(result);
|
|
}
|
|
}
|
|
|
|
private static void RunParallelRequests(HttpClient client)
|
|
{
|
|
int completionCount = 0;
|
|
int iterations = 100000;
|
|
for (int i = 0; i < iterations; i++)
|
|
{
|
|
client.GetAsync(Address)
|
|
.ContinueWith(t => Interlocked.Increment(ref completionCount));
|
|
}
|
|
|
|
while (completionCount < iterations)
|
|
{
|
|
Thread.Sleep(10);
|
|
}
|
|
}
|
|
|
|
public static async Task RunWebSocketClient()
|
|
{
|
|
ClientWebSocket websocket = new ClientWebSocket();
|
|
|
|
string url = "ws://localhost:5000/";
|
|
Console.WriteLine("Connecting to: " + url);
|
|
await websocket.ConnectAsync(new Uri(url), CancellationToken.None);
|
|
|
|
string message = "Hello World";
|
|
Console.WriteLine("Sending message: " + message);
|
|
byte[] messageBytes = Encoding.UTF8.GetBytes(message);
|
|
await websocket.SendAsync(new ArraySegment<byte>(messageBytes), WebSocketMessageType.Text, true, CancellationToken.None);
|
|
|
|
byte[] incomingData = new byte[1024];
|
|
WebSocketReceiveResult result = await websocket.ReceiveAsync(new ArraySegment<byte>(incomingData), CancellationToken.None);
|
|
|
|
if (result.CloseStatus.HasValue)
|
|
{
|
|
Console.WriteLine("Closed; Status: " + result.CloseStatus + ", " + result.CloseStatusDescription);
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("Received message: " + Encoding.UTF8.GetString(incomingData, 0, result.Count));
|
|
}
|
|
}
|
|
}
|
|
}
|