diff options
Diffstat (limited to 'same/src/main/java/com/orbekk/net')
5 files changed, 23 insertions, 3 deletions
diff --git a/same/src/main/java/com/orbekk/net/BroadcastListener.java b/same/src/main/java/com/orbekk/net/BroadcastListener.java index 59a1022..3fdfd23 100644 --- a/same/src/main/java/com/orbekk/net/BroadcastListener.java +++ b/same/src/main/java/com/orbekk/net/BroadcastListener.java @@ -3,6 +3,7 @@ package com.orbekk.net; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; +import java.net.InetSocketAddress; import java.net.SocketException; import org.slf4j.Logger; @@ -21,7 +22,9 @@ public class BroadcastListener { logger.debug("Waiting for broadcast on port " + port); try { if (socket == null) { - socket = new DatagramSocket(port); + socket = new DatagramSocket(null); + socket.setReuseAddress(true); + socket.bind(new InetSocketAddress(port)); } } catch (SocketException e) { logger.warn("Failed to create socket.", e.fillInStackTrace()); @@ -29,7 +32,6 @@ public class BroadcastListener { } try { socket.setBroadcast(true); - socket.setReuseAddress(true); } catch (SocketException e) { logger.warn("Exception: {}", e); } diff --git a/same/src/main/java/com/orbekk/net/Broadcaster.java b/same/src/main/java/com/orbekk/net/Broadcaster.java index 95e279c..b3e4860 100644 --- a/same/src/main/java/com/orbekk/net/Broadcaster.java +++ b/same/src/main/java/com/orbekk/net/Broadcaster.java @@ -15,7 +15,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class Broadcaster { +public class Broadcaster implements BroadcasterInterface { private Logger logger = LoggerFactory.getLogger(getClass()); public List<InetAddress> getBroadcastAddresses() { diff --git a/same/src/main/java/com/orbekk/net/BroadcasterFactory.java b/same/src/main/java/com/orbekk/net/BroadcasterFactory.java new file mode 100644 index 0000000..30dd0ae --- /dev/null +++ b/same/src/main/java/com/orbekk/net/BroadcasterFactory.java @@ -0,0 +1,5 @@ +package com.orbekk.net; + +public interface BroadcasterFactory { + BroadcasterInterface create(); +} diff --git a/same/src/main/java/com/orbekk/net/BroadcasterInterface.java b/same/src/main/java/com/orbekk/net/BroadcasterInterface.java new file mode 100644 index 0000000..08a7e80 --- /dev/null +++ b/same/src/main/java/com/orbekk/net/BroadcasterInterface.java @@ -0,0 +1,5 @@ +package com.orbekk.net; + +public interface BroadcasterInterface { + boolean sendBroadcast(int port, byte[] data); +} diff --git a/same/src/main/java/com/orbekk/net/DefaultBroadcasterFactory.java b/same/src/main/java/com/orbekk/net/DefaultBroadcasterFactory.java new file mode 100644 index 0000000..018d334 --- /dev/null +++ b/same/src/main/java/com/orbekk/net/DefaultBroadcasterFactory.java @@ -0,0 +1,8 @@ +package com.orbekk.net; + +public class DefaultBroadcasterFactory implements BroadcasterFactory { + @Override + public BroadcasterInterface create() { + return new Broadcaster(); + } +} |