diff src/main/java/jp/ac/uryukyu/ie/kono/wifibroadcast/WifiBroadcastChannel.java @ 27:12633f67f3cf default tip

jar
author oshiro
date Wed, 28 Nov 2018 18:28:39 +0900
parents src/main/jp/ac/uryukyu/ie/kono/wifibroadcast/WifiBroadcastChannel.java@42ecbd9364fa
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/uryukyu/ie/kono/wifibroadcast/WifiBroadcastChannel.java	Wed Nov 28 18:28:39 2018 +0900
@@ -0,0 +1,31 @@
+package jp.ac.uryukyu.ie.kono.wifibroadcast;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.StandardProtocolFamily;
+import java.net.StandardSocketOptions;
+import java.nio.channels.SelectionKey;
+import java.nio.channels.spi.SelectorProvider;
+
+public class WifiBroadcastChannel extends WifiMulticastChannel {
+
+	public WifiBroadcastChannel(int id, int port, SocketType sender) throws IOException {
+		// join multicast group on this interface, and also use this
+		// interface for outgoing multicast datagrams
+		selector = SelectorProvider.provider().openSelector();    
+		dc = SelectorProvider.provider().openDatagramChannel(StandardProtocolFamily.INET);
+		dc.setOption(StandardSocketOptions.SO_REUSEADDR, true);
+		mAddr = WifiBroadcast.getBroadcast();
+		sAddr = new InetSocketAddress(mAddr,port);
+		dc.setOption(StandardSocketOptions.SO_BROADCAST, true);
+		if (sender == SocketType.Receiver) {
+			dc.bind(new InetSocketAddress(port));
+			if (selectMode) {
+				dc.configureBlocking(false);
+				dc.register(selector, SelectionKey.OP_READ);
+			}
+		}
+	}
+
+
+}