view src/main/java/jp/ac/u_ryukyu/treevnc/TreeVNCNetwork.java @ 205:614db20d8fab

try to separate Network management
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 02 Jul 2014 16:31:25 +0900
parents
children 2b3eb4a9492f
line wrap: on
line source

package jp.ac.u_ryukyu.treevnc;

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.Socket;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.HashMap;

import jp.ac.u_ryukyu.treevnc.server.TreeManagement;

import com.glavsoft.viewer.swing.ConnectionParams;

public class TreeVNCNetwork {

    
    private HashMap<String, TreeManagement> interfaces = new HashMap<String, TreeManagement>();
    private String vncInterface;
    private MyRfbProto myRfb;
    public MyRfbProto getMyRfb() {
        return myRfb;
    }

    public void setMyRfb(MyRfbProto myRfb) {
        this.myRfb = myRfb;
    }

    public void getNetworkInterfaces() throws SocketException {
        for (Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces(); e.hasMoreElements();) {
            NetworkInterface ni;
            ni = e.nextElement();
            if (ni.isUp() && ni.supportsMulticast() && !ni.isLoopback()) {
                String hostName = ni.getInetAddresses().nextElement().getHostAddress();
                TreeManagement treeManager = new TreeManagement(hostName, ConnectionParams.DEFAULT_VNC_ROOT, myRfb.getViewer().getShowTree());
                treeManager.getList().getFirst().setPort(myRfb.getAcceptPort());
                addNetworkInterface(ni, treeManager);               
                System.out.println("Interfaces :" + ni.getName());
            }
        }
    }
    
    private NetworkInterface getInterface(Socket vncSocket) {
        InetAddress address = vncSocket.getInetAddress();
        try {
            return NetworkInterface.getByInetAddress(address);
        } catch (SocketException e) {
            return null;
        }
    }

    private void addNetworkInterface(NetworkInterface ni, TreeManagement treeManager) {
        interfaces.put(ni.getName(), treeManager);
    }

}