最近开始看b站韩顺平视频(0680_韩顺平Java_网络编程作业2_哔哩哔哩_bilibili)学习java编程,在学习到IO流时,对接收端接受到的消息进行equlas比较总是返回false。
查询该问题时,参考Java中使用equals比较两个字符串,总是返回false_Wq_1115的博客-CSDN博客,想到可能也是字符串长度问题。
将String str=new String(data,0,data.length)修改为String str=new String(data,0,datagramPacket.getLength())后可正常运行。
原因是我不了解DatagramPacket。查看源码后,发现调用DatagramPacket的getDate()方法时,返回的就是创建DatagramPacket对象时传入的数组(我以为返回的是IO流中接受到的信息,数组长度就是信息的长度),长度也是传入的数组长度,所以在进行字符串的equlas比较时,一直返回false。(从Java中使用equals比较两个字符串,总是返回false_Wq_1115的博客-CSDN博客中了解到字符串equals比较时先比较长度)