Flink1.17的无界流快速测试SocketService demo

在学习 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:各位看官大佬,本人菜鸟,有啥不对的请多指教)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值