On 19/01/2021 18:36, Vitaly Davidovich wrote:
Hi all,

A few colleagues and I were trying to make sense of the joinGroup(SocketAddress, NetworkInterface) <https://github.com/openjdk/jdk/blob/05a764f4ffb8030d6b768f2d362c388e5aabd92d/src/java.base/share/classes/java/net/MulticastSocket.java#L382> method.  In particular:

  * Why does this take a SocketAddress and then ignores the port in
    the implementation? Any reason it doesn't take InetAddress, which
    would make it clear the port is unnecessary? The deprecated
    overload of joinGroup takes an InetAddress (and is deprecated
    because it didn't allow specifying the network interface).

That was an API mistake in Java 1.4. When DatagramChannel was updated to support joining multicast groups (in Java 7) it was able to get the parameters right.


  * The MulticastSocket class javadoc still talks
    
<https://github.com/openjdk/jdk/blob/05a764f4ffb8030d6b768f2d362c388e5aabd92d/src/java.base/share/classes/java/net/MulticastSocket.java#L45>
    about using joinGroup(InetAddress) as the way to join a group. 
    Should probably be updated to mention the non-deprecated overload.
  * Also in the class javadoc, there's a "stray" port variable
    
<https://github.com/openjdk/jdk/blob/05a764f4ffb8030d6b768f2d362c388e5aabd92d/src/java.base/share/classes/java/net/MulticastSocket.java#L52>
    that's not defined anywhere in the example.  Since the port is
    ignored by the joinGroup method, what is this port supposed to
    represent?

Yes, the javadoc needs some TLC.

-Alan

Reply via email to