package com.laudandjolynn.mytv.utils; import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.NetworkInterface; import java.net.Socket; import java.net.SocketAddress; import java.net.SocketException; import java.util.Enumeration; import org.slf4j.LoggerFactory; import org.slf4j.Logger; /** * @author: Laud * @email: htd0324@gmail.com * @date: 2015年4月29日 下午12:44:25 * @copyright: www.laudandjolynn.com */ public class NetworkUtils { private final static Logger logger = LoggerFactory .getLogger(NetworkUtils.class); /** * 判断是否可达 * * @param host * @param port * @param timeout * 单位: ms * @return */ public static boolean isReachable(String host, int port, int timeout) { Enumeration<NetworkInterface> nets; try { nets = NetworkInterface.getNetworkInterfaces(); } catch (SocketException e) { return false; } InetSocketAddress remote = new InetSocketAddress(host, port); while (nets.hasMoreElements()) { NetworkInterface net = nets.nextElement(); Enumeration<InetAddress> addresses = net.getInetAddresses(); while (addresses.hasMoreElements()) { InetAddress address = addresses.nextElement(); SocketAddress local = new InetSocketAddress(address, 0); Socket socket = new Socket(); try { socket.bind(local); socket.connect(remote, timeout); return true; } catch (IOException e) { continue; } finally { try { socket.close(); } catch (IOException e) { logger.error(e.getMessage(), e); } } } } return false; } }