From 2ca88b05305439567da90be16bb3a338e949d5ac Mon Sep 17 00:00:00 2001 From: Jonathan Roemer Date: Mon, 20 Apr 2015 10:15:51 -0400 Subject: [PATCH] Began multicast client discovery implementation, and started linking network communication to database update code. --- src/networking/ServerNetworking.java | 41 +++++++++++------------- src/networking/ThermostatNetworking.java | 22 +++++++++++-- src/server/server.java | 4 +-- 3 files changed, 41 insertions(+), 26 deletions(-) diff --git a/src/networking/ServerNetworking.java b/src/networking/ServerNetworking.java index ba46594..7f9e4c3 100644 --- a/src/networking/ServerNetworking.java +++ b/src/networking/ServerNetworking.java @@ -4,6 +4,7 @@ import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.DatagramPacket; +import java.net.InetAddress; import java.net.MulticastSocket; import java.net.ServerSocket; import java.net.Socket; @@ -56,32 +57,28 @@ public void sendDesiredTemp(int sendDesiredTempPORT, int desiredTemperature, } } - /* // Receive multicast messages from the thermostats public void receiveMutlticast(int receiveMulticastPORT) throws Exception { + // Opens the receiving port MulticastSocket multicastReceiver = new MulticastSocket(receiveMulticastPORT); + // Join the All Hosts network segment, as defined by RFC 5771 + + multicastReceiver.joinGroup(InetAddress.getByName("224.0.0.1")); + // Instantiate the DatagramPacket and buffer size + DatagramPacket packet; byte[] buf = new byte[256]; - DatagramPacket currentTemperature = new DatagramPacket(buf, buf.length); try { - while (true) { - // Sets the socket to an accept state - multicastReceiver.receive(currentTemperature); - try { - // Creates a new input stream reader - String received = new String(currentTemperature.getData(), 0, currentTemperature.getLength()); - // Parses the input stream - String currentTemperature = String.parseInt(input.readLine()); - // Outputs the current temperature to the console - System.out.printf("My current IP is: %d \n", - currentTemperature); - } finally { - socket.close(); - } - } - } - finally { - multicastReceiver.close(); + while (true) { + // Receive and decode to string + packet = new DatagramPacket(buf, buf.length); + multicastReceiver.receive(packet); + String received = new String(packet.getData(), 0, packet.getLength()); + packet.setLength(buf.length); + } + } finally { + // Immediately leave the group and close the socket when finished + multicastReceiver.leaveGroup(InetAddress.getByName("224.0.0.1")); + multicastReceiver.close(); } - } */ - + } } diff --git a/src/networking/ThermostatNetworking.java b/src/networking/ThermostatNetworking.java index bd7103f..7c5c6a3 100644 --- a/src/networking/ThermostatNetworking.java +++ b/src/networking/ThermostatNetworking.java @@ -3,13 +3,14 @@ import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; +import java.net.DatagramPacket; +import java.net.InetAddress; +import java.net.MulticastSocket; import java.net.ServerSocket; import java.net.Socket; public class ThermostatNetworking { - - // Listens on receiveDesiredTempPORT and outputs the received int to console public void receiveDesiredTemp(int receiveDesiredTempPORT) throws Exception { // Open a receiver socket @@ -53,5 +54,22 @@ public void sendInfo(int sendCurrentTempPORT, int currentTemperature, String ser sender.close(); } } + + // Send multicast messages to the server to update the database's IP entry + public void updateIP(int sendMulticastPORT) throws Exception { + // Instantiate the DatagramPacket and buffer size + byte[] buf = new byte[256]; + DatagramPacket packet = new DatagramPacket(buf, buf.length); + // Join the All Hosts network segment, as defined by RFC 5771 + MulticastSocket socket = new MulticastSocket(sendMulticastPORT); + socket.joinGroup(InetAddress.getByName("224.0.0.1")); + try { + while (true) { + socket.send(packet); + } + } finally { + + } + } } diff --git a/src/server/server.java b/src/server/server.java index cb610be..c8108bb 100644 --- a/src/server/server.java +++ b/src/server/server.java @@ -71,8 +71,8 @@ public String getDevicesFromEmail(String email) { return null; } - public void datastructureLogEvent(String query) { - } + public void datastructureLogEvent(String query) { + } } \ No newline at end of file