summaryrefslogtreecommitdiff
path: root/same/src/main/java/com/orbekk/net
diff options
context:
space:
mode:
authorKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-02-13 18:02:02 +0100
committerKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-02-13 18:02:02 +0100
commit585f0a27869c230917c220962e0faf954a283e81 (patch)
treeafae5345c84861c05a63385873735d08abecb907 /same/src/main/java/com/orbekk/net
parent50fe422a1eb0ea5e7d8999dfa0b8508acd4af585 (diff)
Fix broadcast code.
– Send broadcast from SameController. – Correct usage of SO_REUSEADDR. – BroadcasterInterface for Android code.
Diffstat (limited to 'same/src/main/java/com/orbekk/net')
-rw-r--r--same/src/main/java/com/orbekk/net/BroadcastListener.java6
-rw-r--r--same/src/main/java/com/orbekk/net/Broadcaster.java2
-rw-r--r--same/src/main/java/com/orbekk/net/BroadcasterFactory.java5
-rw-r--r--same/src/main/java/com/orbekk/net/BroadcasterInterface.java5
-rw-r--r--same/src/main/java/com/orbekk/net/DefaultBroadcasterFactory.java8
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();
+ }
+}