我正在使用JavaFX音樂播放器,它可以通過TCP套接字與Android應用程序進行通信,顯示音樂播放器中的一些數據(例如:播放列表)。 Android應用程序從數據庫加載所有可用音樂播放器的列表。在此列表中還有音樂播放器的當前IP和當前PUBLIC_PORT。然後,Android應用程序可以通過TCP套接字和PUBLIC_PORT連接到播放器。之後,音樂播放器向Android應用程序返回「PRIVATE_PORT」(以便應用程序可以通過PRIVATE_PORT與播放器進行通信),然後開始監聽新客戶端進行連接。Android應用程序和JavaFX應用程序之間進行通信的最佳方式
public void connectToServer() {
boolean end = false;
for(int i = 0; end == false; i++) {
try {
if(i > 100) {
end = true;
}
socket = new java.net.Socket(serveraddress,port);
end = true;
port = Integer.parseInt(getPortFromServer());
Log.d("", "Connected to engine on port" + port);
socket.close();
socket = new java.net.Socket(serveraddress,port);
readPlaylist();
Thread.sleep(1000);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
,因爲我認爲這不是一個很好的解決方案,因爲我需要很多的TCP端口的我想知道是否有實現這個什麼更好的方法。
我對不同實現的唯一想法是REST風格的web服務,但我相信如果這會工作,因爲我使用的是JavaFX,並且我需要一個可執行文件來啓動音樂播放器而無需安裝Web服務器。
編輯:另一個想法是將Web服務器之間的Android應用程序和JavaFX播放器。這樣我就可以解決PORT問題。