我正在编写一个Android应用程序,用于将命令(或更好的数据)传递给同一网络中另一台机器上正在运行的c守护程序(有时在未来也应该使用外部网络),但我有选择最佳方式(或协议)的问题。
与某种API(PHP,Python等)进行通信并不是一个真正的选择(也许我错了)因为这些数据是时间关键的,应该是最快的方式,所以我尝试避免使用http和守护进程与APP之间的另一个问题。另一方面,守护进程也应该可以通过本地运行的PHP脚本访问(将来应该有一个API,所以额外的“层”可能不是那么重要吗?)。 但即使我选择了API解决方案,那么最好的方法是什么呢?套接字,一般IPC?
任何有类似情况的建议或经验都会有所帮助。
答案 0 :(得分:1)
在你的问题中,你说这是时间关键,但它也属于同一个网络。至于您的应用程序没有任何性能问题,您将不会发现任何问题。这也取决于你的守护进程。
我已经使用了很多甚至是远程守护进程,TCP套接字一直是一个不错的选择,我从来没有使用它们的任何限制,只要确保在你的套接字实现Service
之间做出选择需要在所有应用的生命周期中保持活跃状态,或AsyncThread
或Thread
,如果它适用于有限的任务。
这就是我使用的,例如:
socket = new Socket();
socket.connect(new InetSocketAddress(host, port), timeout);
in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "ISO-8859-1"));