summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/net/Net.java
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-11-23 13:12:29 -0500
committerSam Anthony <sam@samanthony.xyz>2024-11-23 13:12:29 -0500
commit1305d223fafc79be7fad07aee1f4348b2eaeaae5 (patch)
treedcd9b2377048573fa092488a5a7612f712183753 /src/main/java/derms/net/Net.java
parent171c58d8ffb29c08ce55d789f0cc1b593c7f5e86 (diff)
downloadsoen423-1305d223fafc79be7fad07aee1f4348b2eaeaae5.zip
rmulticast: use DatagramChannel
Diffstat (limited to 'src/main/java/derms/net/Net.java')
-rw-r--r--src/main/java/derms/net/Net.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/main/java/derms/net/Net.java b/src/main/java/derms/net/Net.java
new file mode 100644
index 0000000..f2eb1fd
--- /dev/null
+++ b/src/main/java/derms/net/Net.java
@@ -0,0 +1,19 @@
+package derms.net;
+
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.Enumeration;
+import java.util.NoSuchElementException;
+
+public class Net {
+ /** Return the first non-loopback multicast interface in the system, or throw exception if no such interface exists. */
+ public static NetworkInterface getMulticastInterface() throws SocketException, NoSuchElementException {
+ Enumeration<NetworkInterface> ifss = NetworkInterface.getNetworkInterfaces();
+ while (ifss.hasMoreElements()) {
+ NetworkInterface ifs = ifss.nextElement();
+ if (ifs.supportsMulticast() && !ifs.isLoopback() && ifs.isUp())
+ return ifs;
+ }
+ throw new NoSuchElementException("no multicast interface available");
+ }
+}