Newer
Older
ServerTester / src / main / java / info / istlab / ServerTester / MulticastSender.java
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();
        }
    }

}