我打算在计算机上制作本地服务器。连接到此本地服务器的任何Android设备都可以从计算机请求数据。
然而,我缺乏如何实现它的概念。对于本地服务器,我计划使用C#来实现它,但它只是创建一个SQL数据库吗?如果是,那么Android应用程序如何从本地服务器请求数据?对于Android应用,用于请求数据的API是什么?我在C#和Android上都有一些经验。
我实际上计划使用Xamarin在跨平台上执行此操作,但我有疑问。例如,如果我想为Android和IOS做应用程序,那么我只编写一次代码,可以在Android和IOS中使用?如果是,那么UI设计呢?
我知道提出这个问题太笼统了,并且不想在这里问,但我真的无法在网上找到答案。我希望任何人都能简单地告诉我实现它的步骤/工具或一些重要的术语/概念,以便我可以进一步研究。非常感谢。
答案 0 :(得分:1)
使用C#来托管RESTFUL service肯定是可行的,但有时会过度使用。
您可以使用节点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以启动您的Web服务:
> node Server.js
然后尝试在浏览器中访问此服务以查看结果!这就对了!
请注意,一旦您定义了此类Web服务,无论您是通过Android还是浏览器请求它,都会得到相同的响应。
答案 1 :(得分:1)
您可以使用Http
服务器的URL Connection
服务器的形式,C#
TcpListener
StreamReader
您可以StreamWriter
使用服务器Printwriter
并使用{ {1}}阅读请求,
回复。如果你在java中这样做,那么你可以使用
作为服务器,因为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();
}
}
}
}
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();
}
}
}
}
127.0.0.1
修改:
因此,如果你想尝试连接url是你的服务器ip和端口在这种情况下使用1302所以如果你的IP是http://127.0.0.1:1302/
你的网址是(progn
(calc)
(calc-hyperbolic)
(calc-eval "[8.66e10 = r * v, -7.51e6 = 0.5*v^2 - 6.67e-11*6e24/r]" 'push)
(calc-solve-for "[r,v]")
(calc-eval -1 'push) ; value for variable s2
(calc-let 'var-s2) ; right name of variable s2
(print (calc-eval 1 'top))
(calc-quit))
请注意它也可以从你的Android访问浏览器和你应该授予C#服务器防火墙权限。