java - 无法从Java中的ServerSocket读取数据

标签 java sockets

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

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

控制台成功显示字符串“hello from clientA”。但是,我不能用“if”来分析这个词。

我的目标是如果是来自“clientA”的请求,则在控制台中显示“ok”。综上所述,即使符合条件,程序也不会到达“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;
     }
  }

最佳答案

不要使用==来比较字符串,而是使用String#equals()方法

if(obtain=="hello from clientA")

应替换为

if("hello from clientA".equals(obtain))

希望这有帮助。

关于java - 无法从Java中的ServerSocket读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24504029/

相关文章:

java - 纹理变形,4 点

java - 将背景颜色更改为 ListView 的项目范围

java - Kafka SimpleConsumer 无法连接到 zookeeper : Received -1 when reading from channel

c - 如何检查c套接字中的TCP端口是否可用?

c - socket编程报错10054

java - Socket OutputStream(BufferedWriter) 不刷新消息

java - 为不同的参数和类型编写具有相同业务逻辑的方法的最佳方法?

java - 比较作为映射的键和值的集合的大小

c - 使用 select() 函数发送和接收数据

java - Android SignalR java 客户端 : Not receiving all the SignalR messages on the HubConnection