Example #1
0
        public async Task Test1(int maxServer, int maxRequests)
        {
            var server       = new HttpServer.HttpServer(1234, maxServer);
            var serverThread = new Thread(async() => await server.StartAsync());

            serverThread.Start();
            var client = new HttpClient()
            {
                BaseAddress = new Uri("http://localhost:1234/")
            };

            var requests = Enumerable.Repeat <Func <Task <HttpResponseMessage> > >(() => client.GetAsync("/"), maxRequests).Select(x => x.Invoke()).ToList();
            await Task.WhenAll(requests);

            Dictionary <int, List <int> > requestsByThread = new Dictionary <int, List <int> >();

            foreach (var r in requests.Select(x => x.Result.Content.ReadAsStringAsync()))
            {
                var str   = await r;;
                var match = _regex.Match(str);
                Assert.True(match.Success);
                ParseAndAddToDict(match, requestsByThread);
            }

            // проверка счетчика
            foreach (var thread in requestsByThread.Keys)
            {
                var max      = requestsByThread[thread].Max();
                var actual   = requestsByThread[thread].OrderBy(x => x);
                var expected = Enumerable.Range(1, max);
                Assert.Equal(expected, actual);
            }
        }
Example #2
0
        private async void Btn_start_httpserver_ClickAsync(object sender, EventArgs e)
        {
            string input = Frm.txt_httpserver_port.Text.Trim();

            if (string.IsNullOrEmpty(input) || !int.TryParse(input, out int port))
            {
                Toast.Warn("端口号格式不正确");
                return;
            }
            if (port < 0 || port <= 1024)
            {
                Toast.Warn("端口号应大于0且不小于1024");
                return;
            }
            try
            {
                if (HttpServer == null || HttpServer.SocketChannel.Open == false)
                {
                    HttpServer = new HttpServer.HttpServer()
                    {
                        Port = port
                    };
                    HttpServer.SocketChannel = await HttpServer.StartAsync();

                    HttpServerLog("HTTP服务器启动成功");
                }
            }
            catch (Exception ex)
            {
                HttpServerLog("HTTP服务器启动失败 失败原因: {0}", ex.Message);
            }
        }