diff --git a/src/main/java/info/istlab/ServerTester/MulticastReceiver.java b/src/main/java/info/istlab/ServerTester/MulticastReceiver.java index 3ec27d7..7a7c5d1 100644 --- a/src/main/java/info/istlab/ServerTester/MulticastReceiver.java +++ b/src/main/java/info/istlab/ServerTester/MulticastReceiver.java @@ -7,7 +7,7 @@ import java.net.SocketException; import java.util.Hashtable; -public class MulticastReceiver implements Runnable{ +public class MulticastReceiver implements Runnable { Thread thread; MulticastSocket socket; MulticastSender sender; @@ -30,29 +30,33 @@ remoteHostsWindow = new RemoteHostsWindow(receivedData); } - public void run(){ - while(thread != null){ + public void run() { + while (thread != null) { byte[] buffer = new byte[1024]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); try { socket.receive(packet); - } catch(SocketException sx) { + } catch (SocketException sx) { thread = null; } catch (IOException e) { e.printStackTrace(); } - String addr = packet.getAddress().getHostAddress(); - String message = new String(packet.getData(), 0, packet.getLength()); + if (!socket.isClosed() && packet != null) { + String addr = packet.getAddress().getHostAddress(); + String message = new String(packet.getData(), 0, packet.getLength()); - receivedData.put(addr, message); - if (remoteHostsWindow != null) { - remoteHostsWindow.updateData(addr, message); - remoteHostsWindow.frame.pack(); + receivedData.put(addr, message); + + if (remoteHostsWindow != null) { + remoteHostsWindow.updateData(addr, message); + remoteHostsWindow.frame.pack(); + } } // System.out.println(addr+"からの受信: " + message); } } - public void stop(){ + + public void stop() { socket.close(); sender.stop(); // thread = null;