如何在C#桌面应用程序和移动(android)设备之间通过本地网络进行通信?

我有一个C#(。net 3.5)桌面应用程序,它在屏幕上打印出一些数字。 现在我想将其扩展到移动设备。 (在我的情况下,Android设备。)它必须显示与计算机屏幕上相同的数字。 整个事情只是一个概念certificate,它不必看起来很好,它不必100%工作,有一个很好的GUI或简单的设置,它只需要显示一些数字。

我一直在研究MonoDroid,因为它有可能使用WCF服务。 (我知道移动设备和台式计算机将连接到同一个网络。)不幸的是,MonoDroid的试用版不支持真正的设备,我不想花几百美元来certificate一点。

我有Java的基本知识,我想我能够使用Android SDK快速开发一个示例应用程序,从网络上的网页获取数据,解释它(XML,JSON等)并在屏幕上显示。

所以我的问题变成:是否有可能从现有的应用程序中创建某种Web服务(无需设置整个IIS服务器),该服务包含一个带有一些XML数据的网页,我可以按给定的时间间隔刷新可以从同一网络上的计算机访问? 我应该怎么做,使用哪种技术?

或者有没有其他方法来实现这样的目标?

我使用C#HttpListener如下…

private void CreateListener { HttpListener listener = null; HttpListenerContext context = null; HttpListenerRequest request = null; HttpListenerResponse response = null; string PortNumber = "9876"; string requestUrl; Boolean listen = false; try { if (listener == null) { listener = new HttpListener(); listener.Prefixes.Add("http://*:" + PortNumber + "/"); listener.Start(); listen = true; while (listen) { try { context = listener.GetContext(); } catch (Exception e) { listen = false; } if (listen) { request = context.Request; requestUrl = request.Url.ToString(); // Process request and/or request Url } } } } } 

基本上是listener.GetContext(); 阻止,直到收到HTTP请求。 然后,您可以使用request = context.Request来检索HTTP请求数据并对其进行处理。 然后,您可以使用context.Response返回响应。

实现和适应相当简单。

您可以在桌面上自行托管WCF服务服务(即,在您的应用程序中而不是通过IIS托管它)。 它相对容易。

http://msdn.microsoft.com/en-us/library/ms731758.aspx

只需设置您的WCF服务即可返回XML,JSON,无论您想要什么; 然后从’机器人设备上击中它。

你可以构建一个使用网络技术的Android应用程序:HTML,CSS,Javascript – 基本上它就像显示一个网页,但你用一个应用程序包装它。 然后,您可以通过PC从网络上提供数据的想法运行,但不需要真正使用Android SDK和Java。

关于这个主题有一本很好的O’Reilly书: 使用HTML,CSS和JavaScript构建Android应用程序 。 看起来它甚至可以在线免费访问。