0

そのため、アプリケーションとデータベースの間でサーバー/クライアント レイヤー アプリを実行しています。サーバーから配列を取得したいと思います。何が起こっているのかを理解するのに十分だと思うコードをいくつか貼り付けます。

データベースで検索するためのキーワード (ユーザーとそのパスワード) をサーバーに送信します

    fromUser = Musername + "," + Password;
    out.println(fromUser);

サーバーのコードは次のとおりです。

  public class Server {

    public static String[] theOutput;
    public static String inputLine;
    public static String[] string_array;
    public static String output = "";

    public static String[] process(String Input) throws Exception {

        String[] data = Input.split(",");

        // Call database class to get the results and store them into the array
        load_login pridobi = new load_login();
        theOutput = pridobi.nalozi(data[0], data[1]);

        return theOutput;

    }

    public static void main(String[] args) throws Exception {

        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(4444);
        } catch (IOException e) {
            System.exit(1);
        }

        Socket clientSocket = null;
        try {
            clientSocket = serverSocket.accept();
        } catch (IOException e) {
            System.exit(1);
        }

        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(
                clientSocket.getInputStream()));

// get the username and password
        inputLine = in.readLine();

        if (inputLine.length() != 0) {

            string_array = process(inputLine);
        }

// And here I would like to do something like that :/
        out.println(string_array);

    }
}

PS: 一部の配列要素は実際には長いテキストであることに注意してください。

4

1 に答える 1

0

技術的には他のものを使用することをお勧めします。サーバーに送信するユーザー名とパスワードに「,」が含まれているとどうなりますか。分割すると、間違ったデータが得られます。

送信前: 例:

String username = URLEncoder.encoder("myusername", "utf-8");
String password = URLEncoder.encoder("mypassword", "utf-8");
String dataToSend = username + "," + password;

サーバーで:

String[] data = Input.split(",");
data[0] = URLDecoder.decoder(data[0],"utf-8");
data[1] = URLDecoder.decoder(data[1],"utf-8");

サーバーは次のような文字列を返す必要があります。

String responseData =  URLEncoder.encoder(theOutput[0], "utf-8") + "," + URLEncoder.encoder(theOutput[1], "utf-8");
out.println(responseData);

クライアント側は、次のように応答を読み取ります。

String dataReceived = inputLine = in.readLine();
String data[] = dataReceived.split(",");
data[0] = URLDecoder.decoder(data[0],"utf-8");
data[1] = URLDecoder.decoder(data[1],"utf-8");
于 2013-09-15T23:47:48.640 に答える