如何使用 "good buy" 消息结束 java 套接字中的连接

how to end connection in java socket with "good buy" message

我在 java 中建立了一个 client/server 聊天室 如果客户端或服务器之一发送 "good buy" 消息,我想结束连接 但事实并非如此,连接仍然有效

客户端代码:

import java.io.*;
import java.net.*;

public class TCPClient {
    public static void main(String[] args) throws Exception {
        String message;
        String recivedMessage = "h";

        Socket clientSoc = new Socket("127.0.0.1",9999);

        while(recivedMessage != "good buy") {
            System.out.print("Client : ");
            BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
            DataOutputStream outToServer = new DataOutputStream(clientSoc.getOutputStream());
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSoc.getInputStream()));

            message = inFromUser.readLine();
            outToServer.writeBytes(message + '\n');

            recivedMessage = inFromServer.readLine();
            System.out.println("Server : " + recivedMessage);
            if (recivedMessage == "good buy") {
                break;
            }
        }
        if (recivedMessage == "good buy") {
            System.out.println("Connection end");
            clientSoc.close();
        }
    }
}

服务端代码:

import java.io.*;
import java.net.*;

public class TCPServer {
    public static void main(String[] args) throws Exception {
        String Message;
        String recivedMessage = "h";
        ServerSocket welcSoc = new ServerSocket(9999);

        while(true){
            Socket serverSoc = welcSoc.accept();
            while(recivedMessage != "good buy"){
                BufferedReader inFromClient = new BufferedReader(new InputStreamReader(serverSoc.getInputStream()));
                DataOutputStream outToClient = new DataOutputStream(serverSoc.getOutputStream());
                recivedMessage = inFromClient.readLine();
                System.out.println("Client : " + recivedMessage);

                System.out.print("Server : ");
                BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
                Message = inFromUser.readLine();
                outToClient.writeBytes(Message + '\n');
            }
            if (recivedMessage == "good buy") {
                break;
            }
        }
        if (recivedMessage == "good buy") {
            System.out.println("Connection end");
            welcSoc.close();
        }
    }
}

由于您没有共享输出,我假设其他一切都按预期工作。 对于字符串比较,请使用:equals

recivedMessage.equals("good buy")

In java == 运算符比较对象的引用,而不是值。 Equals 方法比较对象值。