1. 程式人生 > 實用技巧 >Java指定檢視主機的埠是否已經使用

Java指定檢視主機的埠是否已經使用

package xuexi.Java.Two;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketTimeoutException;
//指定檢視主機的埠是否已經使用
public class Main1 {
public static void main(String[] args) {
// 檢測本地 80 埠
log(isSocketAliveUitlitybyCrunchify("localhost", 80));

// 檢測本地 8080 埠
log(isSocketAliveUitlitybyCrunchify("localhost", 8080));

// 檢測本地 8081 埠
log(isSocketAliveUitlitybyCrunchify("localhost", 8081));

// 檢測 runoob.com 的 80 埠
log(isSocketAliveUitlitybyCrunchify("runoob.com", 80));

// 檢測 runoob.com 的 443 埠
log(isSocketAliveUitlitybyCrunchify("runoob.com", 443));

// 檢測 runoob.com 的 81 埠
log(isSocketAliveUitlitybyCrunchify("runoob.com", 81));
}

/**
* 判斷主機埠
*
* @param hostName
* @param port
* @return boolean - true/false
*/
public static boolean isSocketAliveUitlitybyCrunchify(String hostName, int port) {
boolean isAlive = false;

// 建立一個套接字
SocketAddress socketAddress = new InetSocketAddress(hostName, port);
Socket socket = new Socket();

// 超時設定,單位毫秒
int timeout = 2000;

log("伺服器: " + hostName + ", port: " + port);
try {
socket.connect(socketAddress, timeout);
socket.close();
isAlive = true;

} catch (SocketTimeoutException exception) {
System.out.println("SocketTimeoutException " + hostName + ":" + port + ". " + exception.getMessage());
} catch (IOException exception) {
System.out.println(
"IOException - Unable to connect to " + hostName + ":" + port + ". " + exception.getMessage());
}
return isAlive;
}

private static void log(String string) {
System.out.println(string);
}

private static void log(boolean isAlive) {
System.out.println("是否真正在使用: " + isAlive + "\n");
}
}