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

时间:2011-04-16 15:49:16

标签: c# android wcf web-services xamarin.android

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

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

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

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

或者有其他方法可以实现这样的目标吗?

3 个答案:

答案 0 :(得分:6)

我使用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返回回复。

实施和适应相当简单。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

关于这个主题有一本很好的O'Reilly书: Building Android Apps with HTML, CSS, and JavaScript。看起来它甚至可以在网上免费访问。