我有一项作业需要使用套接字。在客户端和服务器端,我有
char [] value =“ END STREAM” .toCharArray(),这指示流将关闭。

由于我在2个不同的文件中都有这两个数组,因此我的意图是客户端发送消息值>服务器。然后服务器执行功能

while(!Arrays.equals(clientSentence, value))
{
...
inFromClient.read(clientSentence, 0, length);  //to read in from client side
.....
}


本质上,尽管它不发送END STREAM消息,但请继续阅读。我的问题是数组相等性无法按预期工作。我什至通过测试

System.out.println(Arrays.equals(value, clientSentence));
System.out.println(new String(value));
System.out.println(new String(clientSentence));


它打印

false
END STREAM
END STREAM


打印相同的值时怎么可能是假的。我已经确保两个数组都初始化为相同的长度,所以哪里出错了?我已经坚持了几个小时,一直在寻找答案,但是找不到解决方案。谢谢

编辑:添加了我的阅读功能。我使用BufferedReader

最佳答案

在我的盒子上:

char[] x = "END STREAM".toCharArray();
char[] y = "END STREAM".toCharArray();
System.out.println(Arrays.equals(x, y));
System.out.println(Arrays.toString(x));
System.out.println(Arrays.toString(y));


的作品使我想到了几件事:


在您的代码中声明的数组不相等。
字符集不兼容,您说您正在使用BufferedReader,并且,如果您使用的是Java 1.7的Files.newBufferedReader()功能,则在使用它时需要指定一个字符集,这可能会引起问题。
线尾问题可能来自跨平台系统或其他原因\ r与\ n


想一想...可能是#2,请查看此以获取更多信息:http://docs.oracle.com/javase/tutorial/i18n/text/string.html

07-25 22:46
查看更多