① java中如何判斷某主機埠是否打開
Socket
client
=
null;
try{
client
=
new
Socket(IP,
port);
System.out.println("埠已開放");
client.close();
}catch(Exception
e){
System.out.println("埠未開放");
}
====================================================
這樣就能正常捕獲這個異常,不會阻止程序正常運行!
② java中如何檢測本機指定的UDP服務埠是否被佔用並且自動分配一個可用udp埠;
1.埠佔用編譯器會報錯,可以從錯誤看出來是不是埠被佔用。沒有專門的檢測工具和方法
2.DatagramSocket(在Java中使用UDP協議編程的相關類)
用於接收和發送UDP的Socket實例。該類有3個構造函數:
DatagramSocket():通常用於客戶端編程,它並沒有特定監聽的埠,僅僅使用一個臨時的。程序會讓操作系統分配一個可用的埠。
DatagramSocket(int port):創建實例,並固定監聽Port埠的報文。通常用於服務端
DatagramSocket(int port, InetAddress localAddr):這是個非常有用的構建器,當一台機器擁有多於一個IP地址的時候,由它創建的實例僅僅接收來自LocalAddr的報文。
DatagramSocket具有的主要方法如下:
1)receive(DatagramPacket d):接收數據報文到d中。receive方法產生一個「阻塞」。「阻塞」是一個專業名詞,它會產生一個內部循環,使程序暫停在這個地方,直到一個條件觸發。
2)send(DatagramPacket dp):發送報文dp到目的地。
3)setSoTimeout(int timeout):設置超時時間,單位為毫秒。
4)close():關閉DatagramSocket。在應用程序退出的時候,通常會主動釋放資源,關閉Socket,但是由於異常地退出可能造成資源無法回收。所以,應該在程序完成時,主動使用此方法關閉Socket,或在捕獲到異常拋出後關閉Socket。
希望對您有幫助謝謝
③ 利用java代碼如何檢測某埠號是否可用
很簡單,給你寫個例子:
//檢測埠8080到8090哪些可用哪些不可用
for(int i = 8080; i<8090; i++){
try {
ServerSocket sskt = new ServerSocket(i);
System.out.println("埠[" +i + "]可用。");
} catch (IOException e) {
System.out.println("埠 [" + i + "] 被佔用.");
}
}
④ java如何判斷是否能telnet通某機器的埠
Socket client = null;
try{
client = new Socket(IP, port);
System.out.println("埠已開放");
client.close();
}catch(Exception e){
System.out.println("埠未開放");
}
⑤ java中如何判斷埠被佔用
樓主,經驗告訴我們,只要使用的是同一埠,肯定會拋埠已經被綁定並使用的異常,不可能不報錯的!
除非是你把異常信息給去掉了,好好檢查下你是否列印異常信息了吧。
有問題歡迎提問,滿意請採納!
⑥ java 如何檢測本地可用的埠號下面的方法沒有效果,5000埠以及被佔用了,但還是會報該埠為有效
不要用new InetSocketAddress(host, port));,直接使用new InetSocketAddress( port));,主機用綁定所有
你用0.0.0.0或者127.0.0.1都不對的
⑦ 查看埠是哪個java
1.在控制台輸入命令 netstat -aon (netstat -aon|findstr "具體到某個埠號")
2 最右邊有個pid號碼 然後輸入命令 tasklist|findstr "pid號碼" 可以具體的查到佔用這個埠號的程序
就是這樣子
⑧ 被佔用的埠如何通過Java代碼查出是那個ip佔用的
publicclassTestPort
{
publicstaticvoidmain(String[]args)
{
System.out.println(getPID("3306"));//得到進程ID,3306是埠名稱
System.out.println(getProgramName(getPID("3306")));//根據進程ID得到映像名稱
killTask(getProgramName(getPID("3306")));//根據映像名稱關閉進程
}
//得到進程ID
publicstaticStringgetPID(Stringport){
InputStreamis=null;
BufferedReaderbr=null;
Stringpid=null;
try
{
String[]args=newString[]{"cmd.exe","/c","netstat-aon|findstr",port};
is=Runtime.getRuntime().exec(args).getInputStream();
br=newBufferedReader(newInputStreamReader(is));
Stringtemp=br.readLine();
if(temp!=null){
String[]strs=temp.split("\s");
pid=strs[strs.length-1];
}
}
catch(IOExceptione)
{
e.printStackTrace();
}finally{
try
{
br.close();
}
catch(IOExceptione)
{
e.printStackTrace();
}
}
returnpid;
}
//根據進程ID得到映像名稱
(Stringpid){
InputStreamis=null;
BufferedReaderbr=null;
StringprogramName=null;
try
{
String[]args=newString[]{"cmd.exe","/c","tasklist|findstr",pid};
is=Runtime.getRuntime().exec(args).getInputStream();
br=newBufferedReader(newInputStreamReader(is));
Stringtemp=br.readLine();
if(temp!=null){
String[]strs=temp.split("\s");
programName=strs[0];
}
}
catch(IOExceptione)
{
e.printStackTrace();
}finally{
try
{
br.close();
}
catch(IOExceptione)
{
e.printStackTrace();
}
}
returnprogramName;
}
//根據映像名稱關閉進程
publicstaticvoidkillTask(StringprogramName){
String[]args=newString[]{"Taskkill","/f","/IM",programName};
try
{
Runtime.getRuntime().exec(args);
}
catch(IOExceptione)
{
e.printStackTrace();
}
}
}
//題主自己看看具體怎麼get它的ip地址,好久沒有寫,不知道了
⑨ Java怎麼判斷URL是域名格式還是IP加埠格式
判斷方法:
out;
TODO
Auto-generated
catch
block
e,那就是說當做的域名,如果解析出來的IP和域名字元串相等.printStackTrace();
}
catch
(MalformedURLException
e)
{
/簡單的辦法是判斷host格式.cn"
target="_blank">http;/://www,其實是ip.out.com,復雜的但穩妥的辦法是當做域名處理.getByName(host);)://www;
else
System;
TODO
Auto-generated
catch
block
e;
InetAddress
address
=
null;/.cn");
if(host.getHostAddress()))
System;domain".println(".printStackTrace();).println(".equalsIgnoreCase(address;
address
=
InetAddress,域名解析;ip".sina.getHost();
}
catch
(UnknownHostException
e)
{
/.com.sina。
try
{
URL
url=new
URL("
String
host=url
⑩ java 怎麼通過寫一段代碼來判斷埠號是否被佔用。在Linux下。
用socket 去連這個埠,如果能連上,則表示埠被佔用