如果程序在Linux計算機上運行,那麼該程序是否可以掃描允許通過防火牆的端口?例如,如果程序員想製作一個聊天系統,但程序需要知道哪些端口沒有被用戶的防火牆拒絕訪問傳入連接,那麼有沒有辦法在你的代碼中檢查這一點?即使防火牆阻止了同一端口與傳入連接,程序也可能無法將套接字綁定到端口。有沒有辦法檢查開放的防火牆端口?TCP端口訪問和C++
旁註:這純粹是爲了教育目的,沒有壞意圖,要清楚我正在寫一個聊天系統,並且在測試期間,我無法連接桌面 - >筆記本電腦,直到通過允許它手動打開一個端口通過我的防火牆。這對我來說似乎有點偏離,而不像程序員的代碼應該要求用戶那樣做。更不用說,我不想讓少數使用此代碼的人面臨風險(如果將端口永久打開,這樣做)。所以看起來我更適合尋找一種方式來利用已經對傳入TCP連接開放的端口。
sidesidenote:所有客戶端運行的Fedora
查看[UPnP](http://en.wikipedia.org/wiki/Universal_Plug_and_Play)。 –
選擇一個高編號的端口,並以其他方式進行端口集合。防火牆不應該阻止超過32000的東西。基於UDP的方法用於綁定到其他服務使用的通用端口(例如1900),允許您引導一個衆所周知的端口可能是開放的,以便爲用於TCP。 –
我不認爲這可以在服務器本身上可靠地完成。如果沒有使用某種遠程代理服務器,服務器就無法通過定界器防火牆測試連接。 – Barmar