0

シナリオ: 次のコードを使用して、ZeroMQ (ØMQ) を介して C# から Node.JS アプリに文字列型のデータを送信できます:
C# プッシュ コード:

using (var context = new Context(1))
                {
                    using (Socket client = context.Socket(SocketType.PUSH))
                    {
                        client.Connect("tcp://127.0.0.1:12345");
                        int i = 0;
                        while (true)
                        {
                            string request = i.ToString() + "_Hello_ ";
                            i++;
                            Console.WriteLine("Sending request..." + i.ToString());
                            client.Send(request, Encoding.Unicode); 

                              // <== Here is the issues    
                            string reply = client.Recv(Encoding.Unicode).ToString(); 
                              // <== Here is the issues

                            Console.WriteLine("Received reply :", reply);
                        }
                    }
                }

Node.JS プル コード:

pull_socket.bindSync('tcp://127.0.0.1:12345')

pull_socket.on('message', function (data) {
    i++;
    console.log(i.toString() + 'received data:\n');
    console.log(data.toString());
    pull_socket.send('rcvd'); // <== Here is the issues
});

問題: C#replyオブジェクトには string が含まれます"Not supported"が、送信されたデータは Node.js で正しく受信されます。

質問: どこが間違っているのか教えてもらえますか? 問題に光を当ててください。

高度な感謝

4

1 に答える 1

0

PUSH/PULL の代わりに別のソケット タイプ REQ/REP を使用することで解決しまし
た。コードは次のとおりです。
C# プッシュ コード:

using (var context = new Context(1))
                {
                    using (Socket client = context.Socket(SocketType.REQ))
                    {
                        client.Connect("tcp://127.0.0.1:12345");
                        int i = 0;
                        while (true)
                        {
                            string request = i.ToString() + "_Hello_ ";
                            i++;
                            Console.WriteLine("Sending request..." + i.ToString());
                            client.Send(request, Encoding.Unicode); 

                            string reply = client.Recv(Encoding.Unicode).ToString();

                            Console.WriteLine("Received reply :" + reply);
                        }
                    }
                }

Node.JS プル コード:

var rep_socket = zmq.socket('rep')
rep_socket.bindSync('tcp://127.0.0.1:12345')

rep_socket.on('message', function (data) {
    i++;
    console.log(i.toString() + 'received data:\n');
    console.log(data.toString());
    pull_socket.send('hello WORLD'); // <== Here is the issues
});

C# コンソールの出力:

Sending request...0
Received reply: hello WORLD
于 2013-04-02T07:28:17.870 に答える