当前位置: 首页 > news >正文

Java 写一个可以持续发送消息的socket服务端

前言

最近在学习flink, 为了模仿一个持续的无界的数据源, 所以需要一个可以持续发送消息的socket服务端. 先上效果图

效果图

socket服务端可以持续的发送消息, flink端是一个统计单词出现总数的消费端,效果图如下
在这里插入图片描述

在这里插入图片描述

源代码

flink的消费端就不展示了, 需要引入一些依赖和版本, 此处只展示socket的服务端


import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;/*** @author <a href="mailto:liang.qin.work@foxmail.com">liang.qin</a>* @since 2024/7/19 21:50**/
public class ContinuousMessageServer {@SuppressWarnings("InfiniteLoopStatement")public static void main(String[] args) throws IOException {int port = 9879;try (ServerSocket serverSocket = new ServerSocket(port)) {System.out.println("服务器启动,监听端口:" + port);// 无限循环以接受多个客户端连接while (true) {Socket clientSocket = serverSocket.accept();System.out.println("客户端已连接");// 为每个客户端启动一个新的线程来处理发送消息new ClientHandler(clientSocket).start();}}}// 处理客户端连接的内部类static class ClientHandler extends Thread {private final Socket clientSocket;public ClientHandler(Socket clientSocket) {this.clientSocket = clientSocket;}@Overridepublic void run() {try (PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);Scanner scanner = new Scanner(System.in)) {do {System.out.println();System.out.println("请输入消息:");String message = scanner.nextLine();out.println(message);System.out.println("成功发送消息:" + message);// 检查客户端是否已断开连接(可选)} while (!clientSocket.isClosed() && clientSocket.isConnected() && !clientSocket.isInputShutdown());} catch (IOException e) {e.printStackTrace();} finally {try {if (clientSocket != null && !clientSocket.isClosed()) {clientSocket.close();}} catch (IOException e) {e.printStackTrace();}}}}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • c++初阶篇(三):内联函数及auto关键字
  • 代理模式详解
  • 畅玩游戏新选择 :游戏本 Windows10 64位 专业版!
  • oracle备份和恢复exp/imp-----从全库备份中恢复用户库解题思路
  • ubantu22.04安装OceanBase 数据库
  • 数据结构2—顺序表(附源码)
  • react中的context就是vue中的provide/inject吗?
  • 全国区块链职业技能大赛第八套区块链产品需求分析与方案设计
  • Go操作Redis详解
  • 校验deb、rpm、apt、yum安装文件完整性测试
  • Web 性能入门指南-3.5 优化单页应用程序 (SPA)
  • Golang | Leetcode Golang题解之第242题有效的字母异位词
  • Linux下开放指定端口
  • 【人工智能】Transformers之Pipeline(四):零样本音频分类(zero-shot-audio-classification)
  • 双向长短期记忆网络(BiLSTM)及其Python和MATLAB实现
  • [deviceone开发]-do_Webview的基本示例
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • Android单元测试 - 几个重要问题
  • canvas 高仿 Apple Watch 表盘
  • E-HPC支持多队列管理和自动伸缩
  • emacs初体验
  • JavaScript DOM 10 - 滚动
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript函数式编程(一)
  • JAVA多线程机制解析-volatilesynchronized
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • orm2 中文文档 3.1 模型属性
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • 复杂数据处理
  • 计算机常识 - 收藏集 - 掘金
  • 聊聊hikari连接池的leakDetectionThreshold
  • 我看到的前端
  • 移动端唤起键盘时取消position:fixed定位
  • 在electron中实现跨域请求,无需更改服务器端设置
  • - 转 Ext2.0 form使用实例
  • #70结构体案例1(导师,学生,成绩)
  • #HarmonyOS:Web组件的使用
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)Unity3DUnity3D在android下调试
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (转载)利用webkit抓取动态网页和链接
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 直连SAP HANA数据库
  • .NET6 命令行启动及发布单个Exe文件
  • .NetCore部署微服务(二)