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 
..