簡體   English   中英

等待來自客戶端的消息的 Java 服務器

[英]Java server that waits for message from client

我正在嘗試將一個字符串從 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){}
    }

有很多方法可以解決這個問題。 以下是一些。 1) 使用應用服務器並安裝接受來自安卓客戶端請求的網絡服務。 2)創建自己的服務器。 注冊一個遠程對象,該對象將接受來自 android 客戶端的請求。 通過使用 RMI(遠程方法調用),您可以實現客戶端服務器架構。 3) 使用 JMS ,如果它在 Android 上受支持。

我不確定你以前是否做過一些網絡開發。 使用 Web 服務器會更有意義,因為您的客戶端代碼使用 HTTP 協議。 實際上,使用Tomcat等 Web 容器比編寫自己的服務器要容易得多。 然后,您必須編寫一個Servlet來處理 HTTP 請求。

請注意,在 Web 開發方面,您不僅限於 Java。 您可以使用 php、.net 等編寫服務器端。

但是,如果您只是在尋找一個簡單的客戶端 - 服務器(只有一個客戶端)。 然后你可以參考這個 zerioh.tripod.com/ressources/sockets.html 但這意味着你必須使用新的客戶端代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM