Re: Approach to sin_zero
To go a little further with this ... everything seems
to be working fine on Linux. And if the middle tier is
running on Linux and the front tier on Windows things
work fine. But if both the middle and front tiers are
running on Windows, I get a 10054 -- port unreachable
error. I'm not sure if this indicates a problem in the
networking code that I've been working on. If there is
a problem, the above seems to indicate it is with the
middle tier which is a udp server.
addrinfo* cmw::getaddrinfo_wrapper(char const * node
, int port
, int flags
, int socktype
)
{
::std::ostringstream out;
out << port;
addrinfo* res;
addrinfo hints = {0};
hints.ai_flags = flags;
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = socktype;
int err;
if ((err = ::getaddrinfo(node
, out.str().c_str()
, &hints
, &res
)) != 0) {
throw failure("Getaddrinfo: ") << gai_strerror(err);
}
return res;
}
sock_type cmw::udp_server (uint16_t port)
{
addrinfo* res = getaddrinfo_wrapper(nullptr
, port
, AI_PASSIVE
, SOCK_DGRAM
);
sock_type sd = getSocket(res->ai_family, SOCK_DGRAM);
if (::bind(sd, res->ai_addr, res->ai_addrlen)==-1) {
throw failure("udp_server bind: ") << GetError();
}
::freeaddrinfo(res);
return sd;
}
Netstat on windows shows this
UDP [::]:55555 *:*
which is the port number I expect it to use.
I guess it could be a Windows problem, but am not
really sure. All of the code is here --
http://webEbenezer.net/build_integration.html
..