Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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扫描仪读取到一个分隔符(UseLimiter)_Java_C#_Android_Delimiter - Fatal编程技术网

Java Android扫描仪读取到一个分隔符(UseLimiter)

Java Android扫描仪读取到一个分隔符(UseLimiter),java,c#,android,delimiter,Java,C#,Android,Delimiter,我有一个发送大字符串的服务器。当我看到最后一个分隔符时,我想停止读取 安卓: protected Void doInBackground(Void... arg0) { Socket socket = null; try { socket = new Socket(dstAddress, dstPort); Scanner r = new Scanner(new InputStreamReader(socket.getInputStrea

我有一个发送大字符串的服务器。当我看到最后一个分隔符时,我想停止读取

安卓:

 protected Void doInBackground(Void... arg0) {


    Socket socket = null;

    try {
        socket = new Socket(dstAddress, dstPort);

        Scanner r = new Scanner(new InputStreamReader(socket.getInputStream()));

        while (true) {


            //MASTER
            valores[0] = r.nextLine();
            valores[1] = r.nextLine();
            valores[2] = r.nextLine();
            valores[3] = r.nextLine();
            valores[4] = r.nextLine();
            valores[5] = r.nextLine();
            valores[6] = r.nextLine();
            valores[7] = r.nextLine();
            valores[8] = r.nextLine();
            valores[9] = r.nextLine();
            valores[10] = r.nextLine();
            valores[11] = r.nextLine();
            valores[12] = r.nextLine();

            //SLAVE
            valores[13] = r.nextLine();
            valores[14] = r.nextLine();
            valores[15] = r.nextLine();
            valores[16] = r.nextLine();
            valores[17] = r.nextLine();
            valores[18] = r.nextLine();
            valores[19] = r.nextLine();
            valores[20] = r.nextLine();
            valores[21] = r.nextLine();
            valores[22] = r.nextLine();
            valores[23] = r.nextLine();
            valores[24] = r.nextLine();
            valores[25] = r.nextLine();

            r.useDelimiter("\\zfish");
            while (r.hasNext()) {
                valores[26] = r.next();
            }

            publishProgress(valores[0], valores[1], valores[2], valores[3], valores[4], valores[5], valores[6], valores[7], valores[8], valores[9], valores[10], valores[11], valores[12],
                    valores[13], valores[14], valores[15], valores[16], valores[17], valores[18], valores[19], valores[20], valores[21], valores[22], valores[23], valores[24], valores[25], valores[26]);
        }

    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

    } finally {
        if (socket != null) {
            try {
                socket.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    return null;

}
服务器C#

我的Android代码不工作。它卡在value=r.next()上;永远不要离开这条线。这意味着它不是在寻找鱼,不要在循环中反复调用r.useDelimiter()! 如果设置为真,你如何打破循环

    Scanner r = new Scanner(new InputStreamReader(socket.getInputStream()));
    r.useDelimiter("\\s*fish\\s*"); // to find " fish " with space

    while (r.hasNext()) {
        value = r.next();
    }
    r.close(); // very important

编辑。为什么我不能使用while循环?这样总是可以阅读和更新文本视图,对吗?为什么每次阅读时我都需要关闭连接?你必须在某个地方打破这个循环,这就是为什么它像你说的那样被卡住了。否则它将无限期运行!到现在为止,我有一段时间(真的),它工作得很好。我在(r.hasNext()){value=r.next();}时被卡住了。你说的卡住是什么意思?你的代码不工作了。我需要在服务器上更改为“fish”吗?包括空间吗?
    Scanner r = new Scanner(new InputStreamReader(socket.getInputStream()));
    r.useDelimiter("\\s*fish\\s*"); // to find " fish " with space

    while (r.hasNext()) {
        value = r.next();
    }
    r.close(); // very important