You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中修改TCP通信代码实现BufferedReader读取至stopp终止的问题

TCP客户端与服务器持续通信直到输入"stopp"终止

修改后的客户端代码

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

public class Klient {
    public static void main(String[] args) throws UnknownHostException, IOException {
        String sentence;
        String modifiedSentence;
        BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
        Socket clientSocket = new Socket("127.0.0.1", 6789);
        DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

        while (true) {
            sentence = inFromUser.readLine();
            // 处理输入为空或终止指令
            if (sentence == null || "stopp".equalsIgnoreCase(sentence)) {
                outToServer.writeBytes("stopp\n");
                clientSocket.close();
                break;
            }
            outToServer.writeBytes(sentence + '\n');
            modifiedSentence = inFromServer.readLine();
            System.out.println(modifiedSentence);
        }
    }
}

客户端修改点

  • 添加终止条件:当输入stopp(不区分大小写)或输入流结束(sentence为null)时,发送终止指令给服务器,关闭Socket并退出循环。
  • 确保资源正常释放,避免连接泄漏。

修改后的服务器代码

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

public class TCPServer {
    public static void main(String[] args) throws IOException {
        String clientSentence;
        String capitalizedSentence;
        ServerSocket welcomeSocket = new ServerSocket(6789);
        
        Socket connectionSocket = welcomeSocket.accept();
        BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
        DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());

        while (true) {
            clientSentence = inFromClient.readLine();
            // 判断是否收到终止指令或客户端断开
            if (clientSentence == null || "stopp".equalsIgnoreCase(clientSentence)) {
                connectionSocket.close();
                welcomeSocket.close();
                break;
            }
            capitalizedSentence = clientSentence.toUpperCase() + '\n';
            outToClient.writeBytes(capitalizedSentence);
        }
    }
}

服务器修改点

  • 移除原外层无限循环,改为接受单个客户端连接后进入消息处理循环(若需支持多客户端,可将连接处理逻辑放入线程)。
  • 添加终止判断:收到stopp指令或客户端断开时,关闭连接和ServerSocket,终止服务器程序。
  • 持续读取客户端发送的消息,直到触发终止条件。

内容的提问来源于stack exchange,提问作者brah79

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:55:41