固定连接android套接字

2024-04-25 00:10:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经研究stackoverflow好几天了,但似乎找不到像我这样的问题。你知道吗

我有一个Raspberry Pi和一个python socket服务器来监听传入的消息。我还有一个Android应用程序可以连接到它。你知道吗

我的想法是使用pygame模块在raspberry pi上创建一个“简单的”音乐播放器。您可以将Android应用程序视为音乐播放器的控制器(Sonos类似)。你知道吗

我已经有了一个开始,把Android应用程序和Raspberry pi连接起来不是问题。 更重要的是两者之间的交流需要如何流动。

我已经想到了一些“解决方案”:

  1. 目前,Android应用程序在一个新线程中创建了一个socket对象和连接,然后关闭线程(因此线程不接收或发送消息,但是socket仍然存在)。当用户单击一个按钮(比如说更新音乐列表)时,它会打开一个新线程,然后使用已经创建的socket对象发送一个命令,得到一个响应并更新UI,然后再次终止该线程。我对每一个需要执行的操作(播放、暂停、停止等)都这样做使用这种方法,只有Android应用程序才有权请求操作,因为它不会一直监听服务器消息
  2. 那么,如果我创建一个线程,它处于一个不断发送消息的循环中,然后得到一个响应:如何从主UI线程与循环交互(比如单击按钮)。我考虑了一个synchronizedList<String> MessageQueue,其中主线程推送一个命令,并在连接线程的while循环中检查是否有需要发送的消息。你知道吗

我做了一个小计划,我是怎么想到的:

架构(带while循环的单线程): single thread with while loop

我之所以选择sockets,而不仅仅是一个简单的HTTP请求,也是因为以后我想更新UI,这样你就可以看到实时音乐播放(秒数更新和几乎每个musicplayer都有的东西,谁知道还有什么)。你知道吗

如果你们有任何想法,或任何主题,如何创建这个例子应用程序知道,然后请分享!如果有些事情不清楚或有点模糊,请随意询问/评论,因为我刚开始在论坛上询问。你知道吗

也欢迎使用具有实时通信的持久套接字连接的示例应用程序!你知道吗

附带问题:JSON是两个应用程序之间通信的好方法吗?

像这样:

{
   currentsong: "song1.mp3"
   position: "1.30" // The current position the music is playing on the server
   songlist: ["song1.mp3","song2.mp3","song4.mp3"]
   ...
}

Tags: 对象服务器应用程序消息ui音乐pisocket