我认为这个问题真的说明了一切。
对于一些背景知识,我有一个订阅者,我正在尝试为其编写一些测试。为了做到这一点,我从测试中启动了一个发布者,指定tcp://localhost:[port]
为地址。发送消息时,订阅者不会收到它。下面是一些示例代码来演示:
string address = "tcp://localhost:1026";
// string address = "inproc://localhost1026";
var pubSocket = new PublisherSocket();
pubSocket.Bind(address);
var subSocket = new SubscriberSocket();
subSocket.Connect(address);
subSocket.SubscribeToAnyTopic();
pubSocket.SendFrame("Hello world!", false);
Console.WriteLine(subSocket.ReceiveFrameString()); /* <-- tcp transport
waits here forever
*/
subSocket.Dispose();
pubSocket.Dispose();
如果我将协议更改为,inproc://
那么一切都很好。但是,我不想在我的测试中这样做,因为我还想测试一个监视器套接字,这不会引发inproc://
连接事件(据我所知)。
请注意,我在 C# 代码中使用 NetMQ(在 .NET Framework 4.6.2 下运行)。