Android扫描程序读取直到分隔符(UseLimiter)

时间:2016-08-19 18:45:58

标签: java c# android delimiter

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

机器人:

            string conetado, bateria, tensao, altitude, roll, pitch, yaw, velx, vely, velz, estado, atual, desejado;
            string conetado2, bateria2, tensao2, altitude2, roll2, pitch2, yaw2, velx2, vely2, velz2, estado2, atual2, desejado2;

            conetado = master.sconetado;
            bateria = master.sbateria;
            tensao = master.stensao;
            altitude = master.saltitude;
            roll = master.sroll;
            pitch = master.spitch;
            yaw = master.syaw;
            velx = master.svelx;
            vely = master.svely;
            velz = master.svelz;
            estado = master.sestado;
            atual = master.satual;
            desejado = master.sdesejado;


            conetado2 = slave.sconetado;
            bateria2 = slave.sbateria;
            tensao2 = slave.stensao;
            altitude2 = slave.saltitude;
            roll2 = slave.sroll;
            pitch2 = slave.spitch;
            yaw2 = slave.syaw;
            velx2 = slave.svelx;
            vely2 = slave.svely;
            velz2 = slave.svelz;
            estado2 = slave.sestado;
            atual2 = slave.satual;
            desejado2 = slave.sdesejado;

            string_master_frame = Convert.ToBase64String(sendBytes);

            data = conetado + "\n" + bateria + "\n" + tensao + "\n" + altitude + "\n" + roll + "\n" + pitch + "\n" + yaw + "\n" + velx + "\n" + vely + "\n" + velz + "\n" + estado + "\n" + atual + "\n" + desejado + "\n" +
                        conetado2 + "\n" + bateria2 + "\n" + tensao2 + "\n" + altitude2 + "\n" + roll2 + "\n" + pitch2 + "\n" + yaw2 + "\n" + velx2 + "\n" + vely2 + "\n" + velz2 + "\n" + estado2 + "\n" + atual2 + "\n" + desejado2 + "\n" + string_master_frame + "fish";

            send(data)

服务器C#

/Home/Index

我的Android代码无效。它被卡在了值= r.next();永远不要离开这条线。这意味着它不寻找鱼

1 个答案:

答案 0 :(得分:1)

不要在循环中反复调用r.useDelimiter()! 如果它设置为true,你如何突破你的循环?!

    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