Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android作为Web服务服务器?_Java_Android_Web Services_Http_Webserver - Fatal编程技术网

Java Android作为Web服务服务器?

Java Android作为Web服务服务器?,java,android,web-services,http,webserver,Java,Android,Web Services,Http,Webserver,也许与其他人相反,我正在考虑在Android上运行webservice服务器。是否有支持此功能的库?我认为ksoap2只用于消费Web服务,而不是为其提供服务,对吗 而且,如果没有冗长的编码就不可能做到这一点,我只需要在Android上运行一个HTTP服务器并用它接收二进制文件(通过POST) 有人能给点提示吗 干杯, Marchttp服务器android的第一个结果:您基本上可以这样做,但是如果没有root,您将无法绑定特权端口,例如端口80,或者设置OOM killer值来优先保护您的服务器

也许与其他人相反,我正在考虑在Android上运行webservice服务器。是否有支持此功能的库?我认为ksoap2只用于消费Web服务,而不是为其提供服务,对吗

而且,如果没有冗长的编码就不可能做到这一点,我只需要在Android上运行一个HTTP服务器并用它接收二进制文件(通过POST)

有人能给点提示吗

干杯,
Marc

http服务器android的第一个结果:

您基本上可以这样做,但是如果没有root,您将无法绑定特权端口,例如端口80,或者设置OOM killer值来优先保护您的服务器,而不是其他可能需要内存的东西


当然,除非上游wifi或3g提供商愿意为您提供一个感兴趣的客户可以路由的IP地址,否则您将无法做很多事情。

最后,我放弃了在Android端使用Web服务实现它的想法,只是通过套接字通信和自行设计的协议来实现,很像这样:

public class AsyncTaskSocketServer extends AsyncTask<Integer, String, Integer> {

private int id;
private String TAG = "AsyncTaskSocketServer";

private AsyncTaskSocketServer() {
    super();
    Random generator = new Random();
    id = generator.nextInt();
    Log.d(TAG, "created with id: " + id);
}

@Override
protected Integer doInBackground(Integer... ports) {

    int port = ports[0];
    Log.v(TAG, "Trying to start on port: " + port + " with id: " + id);

    try {
        ServerSocket serverSocket = new ServerSocket(port);

        while (!isCancelled()) {
            Socket client = serverSocket.accept();
            try {
                Log.v(TAG, "Listening on port: "
                        + port);
                BufferedReader in = new BufferedReader(
                        new InputStreamReader(client.getInputStream()));
                String str = in.readLine();
                publishProgress(str);

            } catch (Exception e) {
                e.printStackTrace();
                Log.v(TAG, "Exception while socket.accept"+ id);
            } finally {
                client.close();
            }
            client.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
        Log.v(TAG, "Exception in SocketServer creation" + id);
    }
    return port;
}

@Override
protected void onProgressUpdate(String... values) {
    super.onProgressUpdate(values);
    String message = values[0];
    try {
        NetworkQueue.MESSAGE_IN_QUEUE.put(message);
        Log.v(TAG, "received: " + message);
    } catch (Exception e) {
        Logger.log("AsyncTaskSocketServer: Exception while writing to IN_QUEUE");
    }
}
}
公共类AsyncTaskSocketServer扩展了AsyncTask{
私有int-id;
私有字符串TAG=“AsyncTaskSocketServer”;
专用AsyncTaskSocketServer(){
超级();
随机生成器=新随机();
id=generator.nextInt();
Log.d(标签,“创建时id:+id”);
}
@凌驾
受保护的整数doInBackground(整数…端口){
int端口=端口[0];
Log.v(标签,“尝试在端口上启动:“+port+”,id:“+id”);
试一试{
ServerSocket ServerSocket=新的ServerSocket(端口);
而(!isCancelled()){
Socket client=serverSocket.accept();
试一试{
Log.v(标记“侦听端口:”
+港口);
BufferedReader in=新的BufferedReader(
新的InputStreamReader(client.getInputStream());
字符串str=in.readLine();
出版进度(str);
}捕获(例外e){
e、 printStackTrace();
Log.v(标记“socket.accept时异常”+id);
}最后{
client.close();
}
client.close();
}
}捕获(例外e){
e、 printStackTrace();
Log.v(标记“SocketServer创建中的异常”+id);
}
返回端口;
}
@凌驾
受保护的void onProgressUpdate(字符串…值){
super.onProgressUpdate(值);
字符串消息=值[0];
试一试{
NetworkQueue.MESSAGE\u-IN\u-QUEUE.put(MESSAGE);
Log.v(标签“接收:+消息”);
}捕获(例外e){
log(“AsyncTaskSocketServer:写入IN_队列时发生异常”);
}
}
}

怎么做?动态IP是没有问题的,端口可以是18384。就像在任何其他linux上一样,如果移植一个复杂的服务器,会导致一些构建系统的问题——所以选择一个没有复杂构建系统的相当轻量级的解决方案。抱歉,但这对我来说太抽象了。我需要一个具体的解决方案。如果你说“像在任何其他linux上一样”,那么我必须说我刚刚用python在linux上创建了一个简单的Web服务器,有将近10行代码。所以linux与否并不相关……我需要类似于python上的HTTPServer的东西,但是对于Java来说。您的10行python可能会工作,尽管它的部署要比Java中类似的简短解决方案稍微复杂一些,我相信您可以很快想出。Stack overflow不是一个定制的解决方案工厂,它是一个在做了一些个人研究工作后提出问题的地方。是的,我仍然确信我可以用Java提出一个简短的解决方案,但我还没有找到它。我已经试了至少两天了,所以我想我已经做了一些研究工作。无论如何,谢谢你的建设性和精确的帮助。已经看到了,谢谢。但它是否支持Webservice创建和/或重写某些方法,如HTTPServlet中的doGET?就我所见,这只是一个独立的应用程序,不是一个可用的库。作为最后手段,我可以查看源代码并构建自己的Web服务器,但我目前正在寻找最简单的解决方案。