1

好奇心から、ZeroMQ ライブラリーのいくつかの例を実行することにしました。具体的には、 http://zguide.zeromq.org/cs:hwclientの「Hello World」の例

私の知る限り、例からコードを正しくコピーしました。次のようになります。

public class Program
{
    public static void Main(string[] args)
    {
        using(var context = new Context(1))
        {
            using(Socket requester = context.Socket(SocketType.REQ))
            {
                requester.Connect("tcp://localhost:5555");

                const string requestMessage = "Hello";
                const int requestsToSend = 10;

                for(int requestNumber = 0; requestNumber < requestsToSend;requestNumber++)
                {
                    Console.WriteLine("Sending Request {0}...", requestNumber);
                    requester.Send(requestMessage,Encoding.Unicode);

                    string reply = requester.Recv(Encoding.Unicode);
                    Console.WriteLine("Received Reply {0}: {1}", requestNumber, reply);
                }
            }
        }

        Console.ReadLine();

    }

}

私が経験した問題は、次の行に到達すると、プログラムが停止してメッセージを待つだけで、メッセージを受信しないように見えることです。

string reply = requester.Recv(Encoding.Unicode);

プログラムはこの行に引っかかります。これはおそらく競合するtcpアドレスと関係があると思いますか? 私はソケットレベルのプログラミングにあまり慣れていないので、よくわかりません。

なぜこれが機能しないのかについてのアイデアはありますか? ZeroMQ のドキュメントを検索しましたが、まだ何も思いつきません。

4

1 に答える 1

4

「HWClient」と呼ばれていることに注意してください。Hello World サーバー側もあります。最初にそれを実行する必要があります。

于 2012-05-29T15:24:38.593 に答える