以下代码位于服务器端。它可以处理客户端请求,然后在我的控制台中显示客户端输入。
然而,问题出现了......
控制台显示来自clientA&#34的字符串" hello;成功。但是,我不能使用"如果"分析这个词。
我的目标是展示" ok"在控制台中,如果它是来自" clientA"的请求。总而言之,该程序没有达到" System.out.println(" ok")"即使它符合条件。
请帮帮我)......(
感谢。
while(true)
{
Socket server = null;
try
{
server = serverSocket.accept();
DataInputStream in =
new DataInputStream(server.getInputStream());
obtain=in.readUTF();
DataOutputStream out =
new DataOutputStream(server.getOutputStream());
out.writeUTF("server say hello to you");
System.out.println(obtain);//the console show "hello from clientA" exactly
if(obtain=="hello from clientA")
{
System.out.println("ok");
}
server.close();
}catch(SocketTimeoutException s)
{
System.out.println("Again");
try {
serverSocket.setSoTimeout(20000);
} catch (IOException e) {
}
}
catch(Exception b)
{
break;
}
}
答案 0 :(得分:2)
请勿使用==
来比较字符串,请使用String#equals()
方法
if(obtain=="hello from clientA")
应替换为
if("hello from clientA".equals(obtain))
希望这会有所帮助。
答案 1 :(得分:1)
如果条件改为:
if(obtain.equals("hello from clientA"))
{
System.out.println("ok");
}
==
运算符正在检查值的引用而不是实际值。而String#equals
比较对象的值并相应地返回TRUE或FALSE。