2

シナリオ:

StringZeroMQ を介して、C# コンソール アプリケーションから Node.JS サーバーにデータ (タイプなど) を送信しようとしています。

情報:

c# には clrzmq を、C# と Node.JS にはそれぞれ ZeroMQ ライブラリを使用します。

Node.JS からプッシュプルを実行でき、C# からプッシュプルも実行できます。

したがって、ZeroMQ - The Intelligent Transport Layerがマシンにインストールされていることが確認されています (Windows 7 64 ビット)。

問題:

C# コンソール アプリから Node.JS アプリにデータをプッシュすることができません (その逆も試してみました)。両方とも同じマシン上にあり、同じアドレスにあります。tcp://127.0.0.1:2222

Node.js コード:

var zmq = require('zeromq.node');
var pull_socket = zmq.socket('pull');    
pull_socket.connect('tcp://127.0.0.1:2222');    
pull_socket.on('message', function (data) {
    console.log('received data:\n');
    console.log(data);
});

C# コード:

namespace DataServiceEngine
{
    class Program
    {
        static void Main(string[] args)
        {
            //clsApp App = new clsApp();
            //App.appId = "001";
            //App.name = "Back Office";

            //Console.WriteLine("appId :" + App.appId + "\n");
            //Console.WriteLine("name:" + App.name + "\n");

            try
            {
                // ZMQ Context and client socket
                using (var context = new Context(1))
                {
                    using (Socket client = context.Socket(SocketType.PUSH))
                    {
                        client.Connect("tcp://127.0.0.1:2222");

                        string request = "Hello";
                        for (int requestNum = 0; requestNum < 10; requestNum++)
                        {
                            Console.WriteLine("Sending request {0}...", requestNum);
                            client.Send(request, Encoding.Unicode);

                            string reply = client.Recv(Encoding.Unicode);
                            Console.WriteLine("Received reply {0}: {1}", requestNum, reply);
                        }
                    }
                }
            }
            catch (ZMQ.Exception exp)
            {
                Console.WriteLine(exp.Message);
            }
        }
    }
}

質問: 何が原因なのか、どこが間違っているのか誰か教えてもらえますか?

4

1 に答える 1

1

私は同じ問題を抱えていました(ただし、通信Node.JS -> Node.JSを発行しました)。sendersocket.connect("tcp://"+host+":"+port);私が送信側と受信側で行っていた問題を解決するためにreceiversocket.bindSync("tcp://*:"+port);

これで問題が解決することを願っています。

于 2013-03-28T12:23:47.293 に答える