2012-09-11 104 views
0

我有計劃把它寫在java中它等待端口插座Java和NMAP

連接時我在Nmap程序掃描服務器停止(erorr)

這是我的代碼

SSLServerSocketFactory sslServerSocketfactory = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault(); 
       sslServerSocket = (SSLServerSocket)sslServerSocketfactory.createServerSocket(intSSLport); 

out = new PrintWriter(sslSocket.getOutputStream(), true); 
        in = new BufferedReader(new InputStreamReader(sslSocket.getInputStream())); 
        String value = in.readLine(); 

感謝jtahlborn ,,,,我用try和catch解決,,,並捕獲返回

sslSocket = (SSLSocket)sslServerSocket.accept() 

再次

+0

你會得到什麼錯誤? – jtahlborn

+1

@MohamedAlharbi你確定它不只是阻塞,無限期地等待輸入?嘗試設置套接字超時。 – oldrinb

+0

@dimba是正確的,可能你的程序正在等待一個不會到達的響應,因爲Nmap在將端口識別爲開放後纔會退出。建議使用oldrinb的套接字超時可以解決您的問題。 – raz3r

回答

2

nmap通過嘗試連接到它們(發送TCP SYN)來掃描開放端口。 由於您已經打開服務器套接字,所以當有客戶端連接到它時,它會返回。 在你的情況下,它是nmap,它嘗試連接。

AFAIK,nmap不會完成TCP連接過程(3次握手)。 nmap將接收到您的調用accept()後發送的TCP SYN/ACK,並且將結束端口打開。 就是這樣,nmap不會發送完成TCP連接過程(ACK)所需的第3條消息。