新手请问equals问题

qq906907952 2017-02-07 07:02:33
刚学到socket 基于udp写了个伪聊天室
service:

public class UdpService {
public static void main(String[] args) throws IOException, ClassNotFoundException {
DatagramSocket udp = new DatagramSocket(8888);
while(true){
byte container[] = new byte[1024];
DatagramPacket udpdata = new DatagramPacket(container,container.length );
udp.receive(udpdata);
byte b[] = udpdata.getData();
String s = new String(b);
if(s.equals("close")){
System.out.println("connection close");
break;
}
System.out.println(s);
}
udp.close();
}
}



client:

public class UdpClient {
public static void main(String[] args) throws IOException, ClassNotFoundException {
DatagramSocket client = new DatagramSocket(1234);
while(true){
Scanner scn= new Scanner(System.in);
System.out.print("please input(input close to close):");
String i = scn.nextLine();
byte b[] = i.getBytes();
DatagramPacket sendData = new DatagramPacket(b, b.length, new InetSocketAddress("127.0.0.1",8888));
client.send(sendData);
if(i.equals("close")){
break;
}
}
client.close();

}
}



请问为什么我输入close客户端能正常关闭但服务端还在运行??????????
...全文
222 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
李德胜1995 2017-02-08
  • 打赏
  • 举报
回复
没有跳出while循环,s是通过使用平台的默认字符集解码指定的 byte 子数组创建的所以s.equals("close")为false
「已注销」 2017-02-08
  • 打赏
  • 举报
回复

断点一下,发现了问题所在,如图

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧