package info.istlab.ServerTester; import java.awt.Component; import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; import javax.swing.JPanel; public class MulticastSender implements Runnable { Thread thread; MulticastSocket socket = null; public int port = 54320; InetAddress group; public MulticastSender(int portNum) { port = portNum; try { socket = new MulticastSocket(); group = InetAddress.getByName("224.0.0.1"); } catch (IOException e) { e.printStackTrace(); } thread = new Thread(this); thread.start(); } @Override public void run() { while(thread != null){ String message = getServerInfo(); byte[] data = message.getBytes(); DatagramPacket packet = new DatagramPacket(data, data.length, group, port); try { socket.send(packet); } catch (IOException e) { e.printStackTrace(); } try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } } public void stop(){ thread = null; } private String getServerInfo() { JPanel mainPanel = Host.mainhost.mainPanel; // System.out.println("Count: "+mainPanel.getComponentCount()); // 情報収集 StringBuffer sb = new StringBuffer(); for(Component c: mainPanel.getComponents()){ if(c instanceof ServerPanel){ ServerPanel sp = (ServerPanel)c; sb.append(sp.getAvailableServices()+"\n"); } if (c instanceof ServerPanel4WS) { ServerPanel4WS sp = (ServerPanel4WS) c; sb.append(sp.getAvailableServices() + "\n"); } } return sb.toString(); } public void sendnofity() { String message = ""; byte[] data = message.getBytes(); DatagramPacket packet = new DatagramPacket(data, data.length, group, port); try { socket.send(packet); } catch (IOException e) { e.printStackTrace(); } } }