コード例 #1
0
        public async Task Secure()
        {
            var state = 0;
            var block = new AutoResetEvent(false);

            var raw         = File.ReadAllBytes("localhost.pfx");
            var certificate = new X509Certificate2(raw, "test");

            using (var server = new FeatherTcpServer <BinaryMessage>()) {
                server.OnMessageReceived += (endPoint, message) => {
                    if (state == 0)
                    {
                        Assert.Equal(TestPayload1, message.Export().ToArray());
                        state++;
                    }
                    else if (state == 1)
                    {
                        Assert.Equal(TestPayload2, message.Export().ToArray());
                        state++;
                        block.Set();
                    }
                    else
                    {
                        throw new Exception();
                    }
                };
                server.ListenSecure(13008, certificate);

                using (var client = new FeatherTcpClient <BinaryMessage>()) {
                    await client.ConnectSecureAsync("localhost", 13008, "localhost", (object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors sslPolicyErrors) => {
                        return(true); // Ignore that it's a self-signed cert
                    });

                    await client.SendAsync(TestMessage1);

                    await client.SendAsync(TestMessage2);

                    block.WaitOne(1000);
                }
            }

            Assert.Equal(2, state);
        }