I have a simple code chunk that establishes a ZMQ_PUB type socket to broadcast data packets. However, I am finding that this code works on some Windows machines and not others.
Working machine details: ZMQ version 4.3.5, Windows 11.Not-working machine details: ZMQ version 4.3.5, Windows 10.
#include <string>#include <iostream>#include <zmq.h>this->publisher_context = zmq_ctx_new();this->publisher_socket = zmq_socket(this->publisher_context, ZMQ_PUB);assert(this->publisher_socket);std::string address = "tcp://localhost:5556";int broadcastConnect = zmq_bind(this->publisher_socket, address.c_str());if (broadcastConnect != 0) { int error_code = zmq_errno(); std::string text = "Broadcast socket did not connect correctly. ZMQ error code: " + std::to_string(error_code); std::cout << text.c_str() << std::endl;}
This code throws ZMQ Error 19 (ENODEV).
Things I have tried on the not-working machine:
- Checked my open TCP port usage through cmd using
netstat
(port is not in use) - This address (tcp://localhost:5556) is available, I am able to instead create a ZMQ_REQ type socket on the same port. Binding the ZMQ_PUB errors out. This tells me that
localhost
is configured correctly. Additionally, replacinglocalhost
in the address string with[::1]
produces the same results. - Temporarily disabled my Windows Defender Firewall Domain/Private/Public profiles and rebooted, same results.
Things I'll try next:
- Upgrade not-working machine to Windows 11, although I'd rather not if possible.