http://bugs.winehq.org/show_bug.cgi?id=33798
Bug #: 33798 Summary: Multicast issue. Fail to receive packets from a multicast. Product: Wine Version: 1.6-rc1 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: critical Priority: P2 Component: winsock AssignedTo: wine-bugs@winehq.org ReportedBy: MaximeSedDev@gmail.com Classification: Unclassified
I have an error while receiving packets from a multicast. I think it is due to the binding differences between POSIX and Windows.
On POSIX platforms, bind() acts like a filter. So when you specify a local interface (say 192.168.0.1) it only receive packets specifically addressed to there.
Since the multicast are addressed to a different interface (say 239.192.1.1), bind() 192.168.0.1 means it won't receive any of them. However it works on Windows and it means that you only want to receive packets from the local interface 192.168.0.1. On POSIX, you should bind() 239.192.1.1 or INADDR_ANY instead to receive the packets.
It seems that these differences are not handle in WINE(I checked on 1.4, 1.5 and 1.6).
A simple way to try this issue is with the msdn multicast sample: RX: http://msdn.microsoft.com/en-us/library/aa454098.aspx TX: http://msdn.microsoft.com/en-us/library/aa454073.aspx This will work on both Windows and Wine since it use "INADDR_ANY" but if you specify the interfaces it will fail to receive the datagram on WINE.