在学习 Flink 的过程中,我尝试了几款测试工具,遇到一个问题:虽然 DEMO 连接成功且工具软件显示消息发送成功,但实际并未显示结果->如图

经多次测试发现,该组件发送数据时仅传输字节内容而不包含换行符"\n",导致系统默认数据未发送完毕而无法处理。作为Java初学者,我编写了一个Demo作为Socket服务端进行测试,同时也记录下自己的学习成长过程。
各位新手小伙伴需要的话自己取代码啦~
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.List;
import java.util.Scanner;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* @Classname SocketBroadcasterServer
* @Description :
* @Date 2025/6/30 15:03
* @Created by csgogo4j
*/
public class SocketBroadcasterServer {
// 存储所有已连接客户端的输出流
private static final List<PrintWriter> clientWriters = new CopyOnWriteArrayList<>();
public static void main(String[] args) throws Exception {
int port = 7777;
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("🚀 Socket Server started at port " + port);
// 接收客户端连接线程
Thread acceptThread = new Thread(() -> {
while (true) {
try {
Socket client = serverSocket.accept();
OutputStream out = client.getOutputStream();
PrintWriter writer = new PrintWriter(out, true); // 自动 flush
clientWriters.add(writer);
System.out.println("✅ 新客户端连接: " + client.getInetAddress());
} catch (Exception e) {
e.printStackTrace();
}
}
});
acceptThread.setDaemon(true);
acceptThread.start();
// 主线程:控制台输入并广播
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("📝 输入要广播的消息:");
String input = scanner.nextLine();
if (input.trim().equalsIgnoreCase("exit")) {
System.out.println("🚪 退出服务...");
break;
}
for (PrintWriter writer : clientWriters) {
writer.println(input);
}
System.out.println("📤 已广播: " + input + " -> " + clientWriters.size() + " 个客户端");
}
serverSocket.close();
scanner.close();
}
}
测试结果显示,系统实现了预期目标,能够精准解析并处理发送的消息。具体效果如下图所示:

任务完成,今天学了3分钟了,下课啦!LOL走起放松一下~
(PS:各位看官大佬,本人菜鸟,有啥不对的请多指教)
789

被折叠的 条评论
为什么被折叠?



