0

我正在尝试将一个字符串从 Android 应用程序(客户端)发送到 Java 服务器,该服务器等待来自许多 android 客户端的此类消息并将它们存储在一个文件中。客户端编码很好,我在教程和博客的帮助下写了,这里是:

HttpURLConnection conn = null;
    try {
        Log.e("URL", "> " + url);
        conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setUseCaches(false);
        conn.setFixedLengthStreamingMode(bytes.length);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type",
                "application/x-www-form-urlencoded;charset=UTF-8");
        // post the request
        OutputStream out = conn.getOutputStream();
        out.write(bytes);
        out.close();
        // handle the response
        int status = conn.getResponseCode();
        if (status != 200) {
          throw new IOException("Post failed with error code " + status);
        }
    } finally {
        if (conn != null) {
            conn.disconnect();
        }

我想要的是一个Java服务器,它可以处理来自不同Android应用程序的这些消息并将消息字符串存储到一个文本文件中。我只想知道如何处理这些传入的消息并将它们放入一个空字符串中。

到目前为止,我已经使用以下服务器端编码进行了一些小试验:

int port = 8080;
    ServerSocket ss = new ServerSocket(port);
    Socket s = ss.accept();
    while(true) {
       if (s == null) {
            /* nothing to do */
            try {
                wait();
            } catch (InterruptedException e) {
                continue;
            }
        }
        try {
            InputStream is = new BufferedInputStream(s.getInputStream());
            PrintStream ps = new PrintStream(s.getOutputStream());
            ANDROID_DEVICE = ps.flush();       
        }catch(IOException e){}
    }
4

2 回答 2

0

我不确定你以前是否做过一些 Web 开发。由于您的客户端代码使用的是 HTTP 协议,因此使用 Web 服务器会更有意义。事实上,使用Tomcat等 Web 容器比编写自己的服务器要容易得多。然后,您必须编写一个Servlet来处理 HTTP 请求。

请注意,在 Web 开发方面,您不仅限于 Java。您可以使用 php、.net 等编写服务器端。

但是,如果您只是在寻找一个简单的客户端-服务器(仅限一个客户端)。然后你可以参考这个 zerioh.tripod.com/ressources/sockets.html 但这意味着你必须使用新的客户端代码。

于 2013-07-02T10:39:42.540 回答
0

有很多方法可以解决这个问题。以下是一些。1)使用应用程序服务器并安装一个接受来自android客户端的请求的网络服务。2) 创建自己的服务器。注册一个接受来自安卓客户端的请求的远程对象。通过使用 RMI(远程方法调用),您可以实现客户端服务器架构。3) 使用 JMS ,如果它在 Android 上受支持。

于 2013-07-02T09:47:08.260 回答