2016-06-29 21 views
0

Ich plane, einen lokalen Server in Computer zu machen. Jedes Android-Gerät, das mit diesem lokalen Server verbunden ist, kann Daten vom Computer anfordern.Erstellen Sie einen lokalen Server und stellt Daten für Android-Geräte

Allerdings fehlt mir das Konzept, wie man es realisiert. Für den lokalen Server plante ich, C# zu verwenden, aber ist es nur eine SQL-Datenbank? Wenn ja, wie können die Android-Apps dann Daten vom lokalen Server anfordern? Welche API wird für die Android-App verwendet, um die Daten anzufordern? Ich habe etwas Erfahrung sowohl auf C# als auch auf Android.

Ich plante eigentlich, dies in Cross-Plattform mit Xamarin zu tun, aber ich habe Zweifel. Zum Beispiel, wenn ich Apps für Android und IOS machen möchte, dann kodiere ich nur einmal und kann in Android und IOS verwendet werden? Wenn ja, wie wäre es mit dem UI-Design?

Ich weiß, dass das Stellen dieser Frage zu allgemein ist und angenommen wird, hier nicht zu fragen, aber ich finde wirklich die Antwort online nicht. Ich hoffe nur, dass mir jemand kurz die Schritte/Werkzeuge erklären kann, um es zu realisieren, oder einige wichtige Begriffe/Konzepte, damit ich weiter darüber nachdenken kann. Danke vielmals.

Antwort

1

Mit C#, um Ihre RESTFUL service hosten ist sicherlich machbar, aber manchmal übertrieben.

//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); 
}); 

Jetzt laufen diese JavaScript Ihren Web-Dienst zu starten:

Sie könnten Knoten js Setup alles in einer Minute oder zwei verwenden

> node Server.js 

Dann Zugang versuchen, diesen Dienst in Ihrem Browser um das Ergebnis zu sehen! Das ist es!

Beachten Sie, dass sobald Sie einen solchen Web-Service definiert haben, egal, ob Sie ihn über Android oder Browser anfordern, erhalten Sie die gleiche Antwort.

1

Sie können es in Form eines Http Server tun, die ein Android-Gerät mit URL Connection in C# verbinden können Sie Sie TcpListener für den Server und StreamReader Anfrage, um zu lesen und StreamWriter zu antworten. Wenn Sie dies in Java tun, dann können Sie Printwriter für den Server verwenden, die viel einfacher ist, da Java ein Teil von Android ist.
C# Server-Code

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(); 
      } 
     } 
    } 
} 

EDIT: Also, wenn Sie wollen versuchen, die URL ist der Server-IP und den Port in diesem Fall verwendet wird, 1302 zu verbinden, so, wenn Ihre IP ist 127.0.0.1 Ihre URL ist http://127.0.0.1:1302/ Hinweis, dass es auch Zugriff von Ihrem Android-Browser und Sie C# Server sollte Firewall-Erlaubnis gewährt werden.