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