2017-08-07 38 views
-1

我是Java網絡的新手。我用java編寫了一個程序,它可以顯示Web服務器的活動端口。 這就是:我如何知道使用JAVA網絡的端口活動類型

import java.net.Socket; 
import java.util.Scanner; 
import java.lang.Exception; 
import java.lang.Thread; 

class helper{ 
    public static void main(String []args){ 
     Scanner s= new Scanner(System.in); 
     int port; 
     System.out.print("Enter web url :"); 
     String url = s.next(); 
     for(port=0;port<65536;port++){ 
      helper2 h = new helper2(url,port); 
      h.start(); 
     } 
     s.close(); 
    } 
} 
class helper2 extends Thread{ 
    int port; 
    String url; 
    helper2(String url,int port){ 
     this.url=url; 
     this.port=port; 
    } 
    private void getStatus(){ 
     try{ 
      Socket skt = new Socket(url,port); 
      System.out.println(port); 
      skt.close(); 
     }catch(Exception e){ 
      //Handle Exception here 
     } 
    } 
    public void run(){ 
     getStatus(); 
    } 

} 

但現在我想打印端口的端口號,就好像它是一個TCP/IP,FTP,Telnet或一些其他類型的端口類型一起。我想知道在java網絡中是否有這樣的函數返回端口類型,或者是否有一些程序來執行它。另外如何區分不同類型的端口?我的意思不是編程的觀點,而是它們之間的根本區別,它們爲它們提供了自己的身份,並且可以在其他編程語言中用作邏輯聲明。

操作系統本身應該有一些東西,它會在觸發時返回一個端口。

例如: 假設有65536個人(端口)在工廠(機器或操作系統)中。一次他們中的一些正在工作(活躍),而另一些則不在。因此,如果我們問他們發生了什麼事情(像nmap這樣的端口掃描),那些不工作的人不會說任何事情(返回null或無效信號),並且工作的人會說我正在做這個或那個(tcp/udp, ssh,ftp,telnet)。

所以我想趕上他們的迴應,併爲此制定計劃。 想知道nmap如何實際做到這一點? 我們如何觸發一個端口以及該端口的響應是什麼? 如何區分不同類型的端口響應?

+0

通過使用您的操作系統的某些工具,例如linux上的'netstat',這可能會變得更容易。它真的需要在Java中完成嗎? – Aaron

+0

如果有任何請告訴我們downvoting的原因。 –

回答

2

FTP和telnet位於應用層。你可以檢查傳輸層協議,改變套接字的類型,從TCP到UDP(現在你只是檢查TCP)。但爲了檢查應用層協議,您必須知道每個協議的工作原理。

您可以使用nmap完成全端口掃描,它是一種衆所周知的網絡掃描工具。

+0

但我正在使用Windows機器和Java.There應該有一種方法,我無法找到。 –

+0

有很多應用程序協議,例如FTP,HTTP等。你不能全部檢查它們。也許你可以嘗試連接一個套接字到一個端口,並檢查該端口的數量。然後查看[this]這樣的列表(https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml),以確定哪些服務處於活動狀態。 但也有工具可以用,就像我之前說過的那樣。 –

相關問題