因此,我們有一個服務器具有多個使用多個端口的應用程序。以5729,7614,9231爲例。從java中的客戶端查找使用的服務器端口
客戶端需要連接到這些端口中的一個。所有端口都處於活動狀態並等待服務器上的連接,但客戶端需要連接的服務器應用程序僅在端口7614上。其他兩個端口用於不同的應用程序。
一旦某個活動端口連接,客戶端可以在端口ping服務器,並找出它使用什麼應用程序(這是已經實現的瞭解服務器的協議和正常工作)。
的問題是,客戶端無法知道正確的端口會是哪個端口是直到它找到它和坪它的方式。服務器應用程序使用的端口不是靜態的,並且可能隨時更改(而不是我們的代碼,因此無法將其固定爲靜態)。
目前,由於我們不知道什麼端口將包含正確的端口號,我們必須通過從0到65525的每個端口遞增,嘗試連接並ping通連接的端口以確定我們是否連接到正確的應用程序。
這需要永遠。有什麼辦法可以獲得正在使用的3個端口的列表嗎?也就是說,服務器應用程序調用了新的ServerSocket(端口號)的任何端口?
這必須在java中完成。
編輯客戶端需要能夠看到服務器當前使用的端口。這個問題的一切都必須在客戶端完成。在服務器上使用文件或運行命令不是一個選項。
http://stackoverflow.com/questions/21937533/checking-whether-socket-port-is-available - 我們的問題在某種程度上是類似的,雖然我沒有真正的答案... –