コード例 #1
0
ファイル: CurveTests.cs プロジェクト: GerHobbelt/netmq
        public void WithLibzmqServer()
        {
            using (var ctx = new ZContext())
                using (var client = new DealerSocket())
                    using (var server = ZSocket.Create(ctx, ZSocketType.DEALER))
                    {
                        var serverCert = new ZCert();
                        server.CurveServer    = true;
                        server.CurveSecretKey = serverCert.SecretKey;
                        server.Bind($"tcp://127.0.0.1:55367");

                        var clientKeyPair = new NetMQCertificate();
                        client.Options.CurveCertificate = clientKeyPair;
                        client.Options.CurveServerKey   = serverCert.PublicKey;
                        client.Connect("tcp://127.0.0.1:55367");

                        server.SendBytes(Encoding.ASCII.GetBytes("Hello"), 0, 5);
                        var hello = client.ReceiveFrameString();
                        Assert.Equal("Hello", hello);

                        client.SendFrame("Hello");
                        var frame = server.ReceiveFrame();
                        Assert.Equal("Hello", frame.ReadString());
                    }
        }
コード例 #2
0
ファイル: CurveTests.cs プロジェクト: GerHobbelt/netmq
        public void CurveTest()
        {
            var serverPair = new NetMQCertificate();

            using var server                = new DealerSocket();
            server.Options.CurveServer      = true;
            server.Options.CurveCertificate = serverPair;
            server.Bind($"tcp://127.0.0.1:55367");

            var clientPair = new NetMQCertificate();

            using var client = new DealerSocket();
            client.Options.CurveServerKey   = serverPair.PublicKey;
            client.Options.CurveCertificate = clientPair;
            client.Connect("tcp://127.0.0.1:55367");

            for (int i = 0; i < 100; i++)
            {
                client.SendFrame("Hello");
                var hello = server.ReceiveFrameString();
                Assert.Equal("Hello", hello);

                server.SendFrame("World");
                var world = client.ReceiveFrameString();
                Assert.Equal("World", world);
            }
        }
コード例 #3
0
        /// <summary>
        /// Setup Curve encryption.
        /// </summary>
        /// <param name="settings">The encryption settings.</param>
        /// <param name="socket">The socket for the encryption.</param>
        public static void SetupSocket(EncryptionSettings settings, NetMQSocket socket)
        {
            var certificate = new NetMQCertificate(settings.SecretKey, settings.PublicKey);

            socket.Options.CurveServer      = true;
            socket.Options.CurveCertificate = certificate;
        }
コード例 #4
0
        static CertificatesManager()
        {
            var serverKey = new byte[32];
            var rnd       = new Random();

            rnd.NextBytes(serverKey);
            _serverCert = NetMQCertificate.CreateFromSecretKey(serverKey);
        }
コード例 #5
0
        static async Task Run(string[] args)
        {
            Console.WriteLine("Starting ZMQ Client");
            if (args == null || args.Length < 1)
            {
                Console.WriteLine();
                Console.WriteLine("Usage: ./{0}", AppDomain.CurrentDomain.FriendlyName);
                Console.WriteLine();
                args = new[] { "Hello" };
            }

            var arg = args[0];

            Message msg = new()
            {
                Data = arg,
                Id   = 1
            };

            var clientCertificatePair = new NetMQCertificate();
            var client = new RequestSocket();

            //client.Options.CurveServerCertificate = CertificatesManager.GetServerCertificate();
            client.Options.CurveServerKey   = CertificatesManager.GetServerCertificate().PublicKey;
            client.Options.CurveCertificate = clientCertificatePair;
            client.Connect(@"tcp://localhost:5556");

            var bufferedMsg = msg.ToByteArray();

            client.SendFrame(bufferedMsg);

            (byte[], bool)socketMsgResponse;

            while (true)
            {
                socketMsgResponse = await client.ReceiveFrameBytesAsync().ConfigureAwait(false);

                if (!socketMsgResponse.Item2)
                {
                    break;
                }
            }

            var receivedMsg = Message.Parser.ParseFrom(socketMsgResponse.Item1);

            Console.WriteLine("From Server: {0} - {1}", receivedMsg.Id, receivedMsg.Data);

            Console.WriteLine();
            Console.Write("Press any key to exit...");
            Console.ReadKey();
        }
    }