Answered by:
IN_MULTICAST

Question
-
Hi,
In Desktop applications you can use IN_MULTICAST macro defined in winsock.h, with IN_ADDR to determine if an address is a multicast address
bool isMulticast(const IN_ADDR& addr) { return IN_MULTICAST(ntohl(addr.s_addr)); }
How can i do the same in a Metro application? i don't see a way to do the same using Windows::Networking::Hostname.
Any ideas?
Regards,
Jose
Wednesday, May 16, 2012 7:41 PM
Answers
-
The Runtime networking stack is moving away from explicit IP address -- for example, your local IP address is considered to be a "HostName", and there aren't any type of IP address classes (e..g, no IN_ADDR or SOCKADDR or anything similar).
Consequently, we have no equivilent of the IN_MULTICAST macro.
Network Developer Experience Team (Microsoft)
- Marked as answer by pepone.onrez Friday, May 18, 2012 8:42 PM
Friday, May 18, 2012 8:05 PM
All replies
-
I did not find out the IN_MULTICAST in Winsock.h or Winsock2.h.
Is it in third party library?
NEU_ShieldEdge
Thursday, May 17, 2012 7:54 AM -
That is not in a third party library, is part of Windows SDK
C:\Program Files\Windows Kits\8.0\Include\shared\ws2def.h included by
C:\Program Files\Windows Kits\8.0\Include\um\WinSock2.h
#define IN_MULTICAST(i) IN_CLASSD(i)
In previous versions of Winksock.h that definition was there. http://research.microsoft.com/en-us/um/redmond/projects/invisible/include/winsock.h.htm
Thursday, May 17, 2012 3:26 PM -
The Runtime networking stack is moving away from explicit IP address -- for example, your local IP address is considered to be a "HostName", and there aren't any type of IP address classes (e..g, no IN_ADDR or SOCKADDR or anything similar).
Consequently, we have no equivilent of the IN_MULTICAST macro.
Network Developer Experience Team (Microsoft)
- Marked as answer by pepone.onrez Friday, May 18, 2012 8:42 PM
Friday, May 18, 2012 8:05 PM -
I see, i my library i have resort to some string comparisons to solve that, it works, but will be easier if WinRT provide some kind of replacement for IN_MULTICAST.
// // Return true if the hostname represent an IPv multicast // address. // bool isMuticast(HostName^);
In my case that is needed because, when the user enter a multicast address the lib must call JoinMulticastGroup, otherwise it just use ConnectAsync to send data to this UDP endpoint.For IPv4 i check first octet is between 233 and 239, for IPv6 the address start with FF, http://en.wikipedia.org/wiki/Multicast_address, easy to implement using string comparisons
Thanks for taking the time to look at this.
Regars,
Jose
Friday, May 18, 2012 8:42 PM