无法从Java中的ServerSocket读取数据

时间:2014-07-01 06:50:19

标签: java sockets

以下代码位于服务器端。它可以处理客户端请求,然后在我的控制台中显示客户端输入。

然而,问题出现了......

控制台显示来自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;
     }
  }

2 个答案:

答案 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。