2016-03-01 58 views
0

我正在使用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問題。

回答

0

通過使用UDP套接字問題解決了。

相關問題