在Android应用程序和JavaFX应用程序之间进行通信的最佳方式

时间:2016-03-01 15:27:36

标签: java android sockets javafx

我正在研究一种JavaFX音乐播放器,它可以通过TCP套接字与Android App进行通信,从音乐播放器中显示一些数据(例如:播放列表)。 Android应用程序从数据库中加载所有可用音乐播放器的列表。在此列表中还有音乐播放器的当前IP和当前PUBLIC_PORT。然后Android应用程序可以通过TCP套接字和PUBLIC_PORT连接到播放器。之后,音乐播放器将“PRIVATE_PORT”返回到Android应用程序(以便应用程序可以通过PRIVATE_PORT与播放器进行通信),并开始侦听要连接的新客户端。

    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端口,我想知道是否有更好的方法来实现它。

我对另一个实现的唯一想法是RESTful webservice,但我确定这是否可行,因为我使用JavaFX并且我需要一个可执行文件来启动音乐播放器而无需安装Web服务器。

编辑:另一个想法是在Android应用程序和JavaFX播放器之间放置一个Web服务器。这样我就可以解决PORT问题了。

1 个答案:

答案 0 :(得分:0)

使用UDP套接字解决了这个问题。