Subscriber socket appears to be binding to port when it shouldn't

197 views
Skip to first unread message

Josh Nyce

unread,
Aug 29, 2018, 12:00:54 PM8/29/18
to zeromq
Doron/anyone:

First of all, thank you for NetMQ. It's very powerful and useful.

I'm using it to subscribe to data in an Excel addin - using Excel DNA as a wrapper for C#.

I'm getting this error form the subscriber:

2018-08-29 09:00:30,270 [1] ERROR [AddinName].RtdServer System.Net.Sockets.SocketException (0x80004005): An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full
   at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.Sockets.Socket.Bind(EndPoint localEP)
   at NetMQ.Core.Utils.Signaler..ctor()
   at NetMQ.Core.Mailbox..ctor(String name)
   at NetMQ.Core.Ctx..ctor()
   at NetMQ.NetMQConfig.get_Context()
   at NetMQ.NetMQSocket..ctor(ZmqSocketType socketType, String connectionString, DefaultAction defaultAction)
   at CentivaExcelRealTime.RtdServer..ctor()

I don't understand why the error indicates it's trying to bind when the code doesn't explicitly bind. Here is an example of one of the subscribers:

var updateTimesSubscriber = new SubscriberSocket();
updateTimesSubscriber.Connect(String.Format("tcp://{0}:{1}", Properties.Settings.Default.HostServer, Properties.Settings.Default.UpdateTimesPort));
updateTimesSubscriber.Subscribe("updateTimes");
updateTimesSubscriber.ReceiveReady += UpdateTimesSubscriber_ReceiveReady;

If the subscriber is in fact binding to the socket, it would explain another error I'm getting from one of the publishers which runs on the same machine as the subscribers:

2018-08-27 09:32:35,147 [VSTA_Main] ERROR Shared.Updates NetMQ.NetMQException: Exception of type 'NetMQ.NetMQException' was thrown. ---> System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions
   at AsyncIO.Windows.Socket.Bind(IPEndPoint localEndPoint)
   at NetMQ.Core.Transports.Tcp.TcpListener.SetAddress(String addr)
   --- End of inner exception stack trace ---
   at NetMQ.Core.Transports.Tcp.TcpListener.SetAddress(String addr)
   at NetMQ.Core.SocketBase.Bind(String addr)
   at NetMQ.NetMQSocket..ctor(ZmqSocketType socketType, String connectionString, DefaultAction defaultAction)
   at Shared.Updates.SendMessage(String Topic, String Message)

Thank you,

Josh
Reply all
Reply to author
Forward
0 new messages