【问题标题】:Create a local server and provides data to Android devices创建本地服务器并向 Android 设备提供数据
【发布时间】:2016-06-29 12:38:28
【问题描述】:

我打算在电脑上做一个本地服务器。任何连接到此本地服务器的 Android 设备都可以从计算机请求数据。

但是,我缺乏如何实现它的概念。对于本地服务器,我打算用C#来做,但它只是做一个SQL数据库吗?如果是,那么 Android 应用程序如何从本地服务器请求数据?对于 Android 应用,用于请求数据的 API 是什么?我对 C# 和 Android 都有一些经验。

我实际上计划使用 Xamarin 在跨平台中执行此操作,但我有疑问。比如我想做安卓和IOS的app,那么我只写一次代码就可以在安卓和IOS上使用吗?如果有,UI设计如何?

我知道问这个问题太笼统了,不想在这里问,但我真的在网上找不到答案。我只是希望任何人都可以简要地告诉我实现它的步骤/工具或一些重要的术语/概念,以便我可以进一步研究。非常感谢。

【问题讨论】:

    标签: c# android localserver


    【解决方案1】:

    使用 C# 来托管您的 RESTFUL service 当然是可行的,但有时会有些矫枉过正。

    您可能会在一两分钟内使用 node js 设置所有内容:

    //Server.js
    //Lets require/import the HTTP module
    var http = require('http');
    //Lets define a port we want to listen to
    const PORT=8080; 
    //We need a function which handles requests and send response
    function handleRequest(request, response){
        response.end('It Works!! Path Hit: ' + request.url);
    }
    
    //Create a server
    var server = http.createServer(handleRequest);
    //Lets start our server
    server.listen(PORT, function(){
    //Callback triggered when server is successfully listening. Hurray!
    console.log("Server listening on: http://localhost:%s", PORT);
    });
    

    现在运行这个 JavaScript 来启动你的网络服务:

    > node Server.js
    

    然后尝试在浏览器中访问此服务以查看结果!这就对了!

    请注意,一旦您定义了此类网络服务,无论您是通过 Android 还是浏览器请求它,您都会得到相同的响应。

    【讨论】:

      【解决方案2】:

      您可以以Http 服务器的形式执行此操作,Android 设备可以使用URL Connection 连接到C# 您可以使用TcpListener 作为服务器并使用StreamReader 读取请求和@987654327 @ 回复。如果您在 java 中执行此操作,那么您可以将 Printwriter 用于服务器,这更容易,因为 java 是 android 的一部分。
      C# 服务器代码

      using System;
      using System.IO;
      using System.Net.Sockets;
      using System.Web;
      
      namespace Server
      {
          class Program
          {
              static void Main(string[] args)
              {
      
                  TcpListener listener = new TcpListener(1302);
                  listener.Start();
                  while (true)
                  {
                      Console.WriteLine("Waiting for connection");
                      TcpClient client = listener.AcceptTcpClient();
                      StreamReader sr = new StreamReader(client.GetStream());
                      StreamWriter sw = new StreamWriter(client.GetStream());
                      try
                      {
                          //client request
                          string request = sr.ReadLine();
                          Console.WriteLine(request);
                          string[] tokens = request.Split(' ');
      
                          string reply= tokens[1];
                          if (reply == "/")
                          {
                              reply = "Welcome";
                          }
                          //Handle request
      
      
                          sw.WriteLine("HTTP/1.0 200 OK\n");
                          string data = "You can handle request this way";
                              sw.WriteLine(data);
                              sw.Flush();
      
      
      
                      }catch(Exception ex)
                      {
                          //error\
                          sw.WriteLine("HTTP/1.0 404 OK\n");
                          sw.WriteLine("ERROR");
                      }
                      client.Close();
                  }
              }
          }
      }
      

      编辑: 因此,如果您想尝试连接 url 是您的服务器 ip 和端口在这种情况下使用 1302 所以如果您的 ip 是 127.0.0.1 您的 url 是 @987654321@ 请注意,它也可以从您的 android 浏览器和您的 C#服务器应该被授予防火墙权限。

      【讨论】:

        猜你喜欢
        • 2015-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-11
        • 2013-03-04
        • 1970-01-01
        • 2011-03-09
        相关资源
        最近更新 更多