请教一个java如何知道远程机器是否打开某一个端口。

时间:2021-08-21 15:22:32
场景:192.168.0.1 机器在端口81上打开了一个程序。
      192.168.0.2 使用java程序如何知道192.168.0.1机器是否已经打开81端口。

20 个解决方案

#1


不太懂,帮顶.貌似用个socket直接连一下那个端口好象就行了.

#2


连接不错就可以啦

#3


用socket连192.168.0.1
catch IOException

出现异常说明端口没打开。。

开了防火墙的情况除外。 :)

#4


强烈关注中

可以用tcp的3次握手来实现吧

可以借鉴扫描的原理,发一个数据包.

或者,调用外部程序试试..

#5


用socket试一下吧

#6


用socket循环1-65535可以查到某台机器的所有打开端口.
不知道对不对.

#7


就是像扫描的那些程序一样做.

#8


用socket连192.168.0.1
catch IOException

应该可行!

#9


要是出现别有情况的话出现IOException呢???

#10


你就单一个用try去捕捉socket连接嘛!

#11


mark

#12


用socket

#13


扫描给定主机的TCP端口:
import java.net.*;
import java.io.*;

public class usePortScanner 
{
   public static void main(String[] args) 
   {    
     String host = "localhost";
     if (args.length > 0) 
     {
       host = args[0];
     }
     //扫描主机端口
     for (int i = 1; i < 1024; i++) 
     {
       try 
       {
       //建立Socket
         Socket s = new Socket(host, i);
         //输出端口信息
         System.out.println("There is a server on port " + i + " of " + host);
       }
       catch (UnknownHostException e) 
       {
         System.err.println(e);
         break;
       }
       catch (IOException e) 
       {
       // must not be a server on this port
       }
     } // end for  
   }  // end main  
}  // end usePortScanner

#14


如果只想扫描81端口,就不用循环了

#15


Proto  Local Address          Foreign Address        State
 TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
 TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
 TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING
 TCP    0.0.0.0:6789           0.0.0.0:0              LISTENING
 TCP    127.0.0.1:1050         0.0.0.0:0              LISTENING
 TCP    127.0.0.1:1080         0.0.0.0:0              LISTENING
 TCP    192.168.20.111:139     0.0.0.0:0              LISTENING
 TCP    192.168.20.111:1100    192.168.17.100:8889    ESTABLISHED
 TCP    192.168.20.111:1164    192.168.17.251:1533    ESTABLISHED
 TCP    192.168.20.111:1228    192.168.17.100:8889    ESTABLISHED
 TCP    192.168.20.111:1401    192.168.17.137:3389    ESTABLISHED
 TCP    192.168.20.111:2193    192.168.17.150:445     TIME_WAIT
 TCP    192.168.20.111:2198    192.168.17.100:8889    ESTABLISHED
 TCP    192.168.20.111:3314    192.168.17.201:1521    ESTABLISHED
 TCP    192.168.20.111:4643    192.168.30.250:52514   ESTABLISHED
 TCP    192.168.20.111:4645    192.168.30.250:51819   ESTABLISHED
 UDP    0.0.0.0:161            *:*
 UDP    0.0.0.0:162            *:*
 UDP    0.0.0.0:445            *:*
 UDP    0.0.0.0:500            *:*
 UDP    0.0.0.0:1025           *:*
 UDP    0.0.0.0:1026           *:*
 UDP    0.0.0.0:1038           *:*
 UDP    0.0.0.0:1774           *:*
 UDP    0.0.0.0:1855           *:*
 UDP    0.0.0.0:2197           *:*
 UDP    0.0.0.0:3915           *:*
 UDP    0.0.0.0:4500           *:*
 UDP    0.0.0.0:4598           *:*
 UDP    0.0.0.0:4642           *:*
 UDP    0.0.0.0:6000           *:*
 UDP    0.0.0.0:6001           *:*
 UDP    0.0.0.0:6002           *:*
 UDP    0.0.0.0:6003           *:*
 UDP    0.0.0.0:6004           *:*
 UDP    0.0.0.0:6005           *:*
 UDP    0.0.0.0:6006           *:*
 UDP    0.0.0.0:6007           *:*
 UDP    0.0.0.0:6008           *:*
 UDP    0.0.0.0:6009           *:*
 UDP    0.0.0.0:6010           *:*
 UDP    0.0.0.0:6011           *:*
 UDP    0.0.0.0:6012           *:*
 UDP    0.0.0.0:6013           *:*
 UDP    0.0.0.0:6014           *:*
 UDP    0.0.0.0:6015           *:*
 UDP    0.0.0.0:6016           *:*
 UDP    0.0.0.0:6017           *:*
 UDP    0.0.0.0:11113          *:*
 UDP    127.0.0.1:123          *:*
 UDP    127.0.0.1:1027         *:*
 UDP    127.0.0.1:1043         *:*
 UDP    127.0.0.1:1078         *:*
 UDP    127.0.0.1:1088         *:*
 UDP    127.0.0.1:1245         *:*
 UDP    127.0.0.1:1317         *:*
 UDP    127.0.0.1:1419         *:*
 UDP    127.0.0.1:1900         *:*
 UDP    127.0.0.1:4985         *:*
 UDP    192.168.20.111:123     *:*
 UDP    192.168.20.111:137     *:*
 UDP    192.168.20.111:138     *:*
 UDP    192.168.20.111:1900    *:*
这是我本机显示的端口监听状态,我现在如果想测试UDP的161端口,不知道怎么做?

当协议是TCP的时候我当然可以用socket,但是现在我想测试的是UDP协议的端口。

#16


就用socket来链接就可以测试啊

#17


udp端口状态的扫描,用java是做不到的,可以调用外部接口,构造一个包发过去,如果有返回,说明是关闭的,没返回说明是开放的,所以在网络不好的情况下,准确率很低

#18


学习

#19


帮你顶!

#20


java.net.Datagram***

Thinking in Java里面好像看到过例子

#1


不太懂,帮顶.貌似用个socket直接连一下那个端口好象就行了.

#2


连接不错就可以啦

#3


用socket连192.168.0.1
catch IOException

出现异常说明端口没打开。。

开了防火墙的情况除外。 :)

#4


强烈关注中

可以用tcp的3次握手来实现吧

可以借鉴扫描的原理,发一个数据包.

或者,调用外部程序试试..

#5


用socket试一下吧

#6


用socket循环1-65535可以查到某台机器的所有打开端口.
不知道对不对.

#7


就是像扫描的那些程序一样做.

#8


用socket连192.168.0.1
catch IOException

应该可行!

#9


要是出现别有情况的话出现IOException呢???

#10


你就单一个用try去捕捉socket连接嘛!

#11


mark

#12


用socket

#13


扫描给定主机的TCP端口:
import java.net.*;
import java.io.*;

public class usePortScanner 
{
   public static void main(String[] args) 
   {    
     String host = "localhost";
     if (args.length > 0) 
     {
       host = args[0];
     }
     //扫描主机端口
     for (int i = 1; i < 1024; i++) 
     {
       try 
       {
       //建立Socket
         Socket s = new Socket(host, i);
         //输出端口信息
         System.out.println("There is a server on port " + i + " of " + host);
       }
       catch (UnknownHostException e) 
       {
         System.err.println(e);
         break;
       }
       catch (IOException e) 
       {
       // must not be a server on this port
       }
     } // end for  
   }  // end main  
}  // end usePortScanner

#14


如果只想扫描81端口,就不用循环了

#15


Proto  Local Address          Foreign Address        State
 TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
 TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
 TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING
 TCP    0.0.0.0:6789           0.0.0.0:0              LISTENING
 TCP    127.0.0.1:1050         0.0.0.0:0              LISTENING
 TCP    127.0.0.1:1080         0.0.0.0:0              LISTENING
 TCP    192.168.20.111:139     0.0.0.0:0              LISTENING
 TCP    192.168.20.111:1100    192.168.17.100:8889    ESTABLISHED
 TCP    192.168.20.111:1164    192.168.17.251:1533    ESTABLISHED
 TCP    192.168.20.111:1228    192.168.17.100:8889    ESTABLISHED
 TCP    192.168.20.111:1401    192.168.17.137:3389    ESTABLISHED
 TCP    192.168.20.111:2193    192.168.17.150:445     TIME_WAIT
 TCP    192.168.20.111:2198    192.168.17.100:8889    ESTABLISHED
 TCP    192.168.20.111:3314    192.168.17.201:1521    ESTABLISHED
 TCP    192.168.20.111:4643    192.168.30.250:52514   ESTABLISHED
 TCP    192.168.20.111:4645    192.168.30.250:51819   ESTABLISHED
 UDP    0.0.0.0:161            *:*
 UDP    0.0.0.0:162            *:*
 UDP    0.0.0.0:445            *:*
 UDP    0.0.0.0:500            *:*
 UDP    0.0.0.0:1025           *:*
 UDP    0.0.0.0:1026           *:*
 UDP    0.0.0.0:1038           *:*
 UDP    0.0.0.0:1774           *:*
 UDP    0.0.0.0:1855           *:*
 UDP    0.0.0.0:2197           *:*
 UDP    0.0.0.0:3915           *:*
 UDP    0.0.0.0:4500           *:*
 UDP    0.0.0.0:4598           *:*
 UDP    0.0.0.0:4642           *:*
 UDP    0.0.0.0:6000           *:*
 UDP    0.0.0.0:6001           *:*
 UDP    0.0.0.0:6002           *:*
 UDP    0.0.0.0:6003           *:*
 UDP    0.0.0.0:6004           *:*
 UDP    0.0.0.0:6005           *:*
 UDP    0.0.0.0:6006           *:*
 UDP    0.0.0.0:6007           *:*
 UDP    0.0.0.0:6008           *:*
 UDP    0.0.0.0:6009           *:*
 UDP    0.0.0.0:6010           *:*
 UDP    0.0.0.0:6011           *:*
 UDP    0.0.0.0:6012           *:*
 UDP    0.0.0.0:6013           *:*
 UDP    0.0.0.0:6014           *:*
 UDP    0.0.0.0:6015           *:*
 UDP    0.0.0.0:6016           *:*
 UDP    0.0.0.0:6017           *:*
 UDP    0.0.0.0:11113          *:*
 UDP    127.0.0.1:123          *:*
 UDP    127.0.0.1:1027         *:*
 UDP    127.0.0.1:1043         *:*
 UDP    127.0.0.1:1078         *:*
 UDP    127.0.0.1:1088         *:*
 UDP    127.0.0.1:1245         *:*
 UDP    127.0.0.1:1317         *:*
 UDP    127.0.0.1:1419         *:*
 UDP    127.0.0.1:1900         *:*
 UDP    127.0.0.1:4985         *:*
 UDP    192.168.20.111:123     *:*
 UDP    192.168.20.111:137     *:*
 UDP    192.168.20.111:138     *:*
 UDP    192.168.20.111:1900    *:*
这是我本机显示的端口监听状态,我现在如果想测试UDP的161端口,不知道怎么做?

当协议是TCP的时候我当然可以用socket,但是现在我想测试的是UDP协议的端口。

#16


就用socket来链接就可以测试啊

#17


udp端口状态的扫描,用java是做不到的,可以调用外部接口,构造一个包发过去,如果有返回,说明是关闭的,没返回说明是开放的,所以在网络不好的情况下,准确率很低

#18


学习

#19


帮你顶!

#20


java.net.Datagram***

Thinking in Java里面好像看到过例子

#21