吉林省可信网站认证牌匾网站优化排名方法

张小明 2026/1/10 14:44:25
吉林省可信网站认证牌匾,网站优化排名方法,seo网站营销推广,网站怎么接入百度地图最近在使用 Spring Boot 对接物联网设备#xff0c;需要通过 TCP 协议进行通信。调研过程中发现#xff0c;如果使用 Netty 框架并集成到 Spring Boot 中#xff0c;配置和维护相对较为复杂。综合考虑后#xff0c;最终选择了 Spring Integration 提供的 TCP/UDP 模块来实现…最近在使用 Spring Boot 对接物联网设备需要通过 TCP 协议进行通信。调研过程中发现如果使用 Netty 框架并集成到 Spring Boot 中配置和维护相对较为复杂。综合考虑后最终选择了 Spring Integration 提供的 TCP/UDP 模块来实现相关功能整体集成更加简洁也更符合 Spring 生态的使用习惯。第一步引入依赖dependencygroupIdorg.springframework.integration/groupIdartifactIdspring-integration-ip/artifactId/dependency第二步提供两个tcp服务端类文件这两个类文件大家按需选择即可。第一个类文件单向接收tcp客户端数据package com.testweb.testweb.tcp.web;importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.integration.annotation.ServiceActivator;importorg.springframework.integration.channel.DirectChannel;importorg.springframework.integration.ip.tcp.TcpReceivingChannelAdapter;importorg.springframework.integration.ip.tcp.connection.AbstractServerConnectionFactory;importorg.springframework.integration.ip.tcp.connection.TcpNioServerConnectionFactory;importorg.springframework.integration.ip.tcp.serializer.ByteArrayCrLfSerializer;importorg.springframework.messaging.Message;importorg.springframework.messaging.MessageChannel;importjava.nio.charset.StandardCharsets;Slf4j Configuration public class TcpServerConfig{Value(${tcp.server.port:7788})private int port;/** *1. TCP 连接工厂服务端 */ Bean public AbstractServerConnectionFactoryserverConnectionFactory(){TcpNioServerConnectionFactory factorynew TcpNioServerConnectionFactory(port);// 关键拆包 / 粘包解决方案行结束符 // 按换行符(\r\n 或\n)拆包常用于文本协议 ByteArrayCrLfSerializer serializernew ByteArrayCrLfSerializer();// 二进制协议示例长度头 消息内容常用于物联网 // ByteArrayLengthHeaderSerializer serializer// new ByteArrayLengthHeaderSerializer();factory.setSerializer(serializer);factory.setDeserializer(serializer);factory.setUsingDirectBuffers(true);returnfactory;}/** *2. 接收同步通道 */ Bean public MessageChanneltcpReceiveChannel(){returnnew DirectChannel();}/** *3. TCP 入站适配器只接收 */ Bean public TcpReceivingChannelAdapter tcpInboundAdapter(AbstractServerConnectionFactory factory, MessageChannel tcpReceiveChannel){TcpReceivingChannelAdapter adapternew TcpReceivingChannelAdapter();adapter.setConnectionFactory(factory);adapter.setOutputChannel(tcpReceiveChannel);returnadapter;}/** *4. 业务处理器单向接收不能给客户端回复 */ ServiceActivator(inputChanneltcpReceiveChannel)public void handleMessage(Messagebyte[]message){String datanew String(message.getPayload(), StandardCharsets.UTF_8);String connectionId(String)message.getHeaders().get(ip_connectionId);log.info(收到 TCP 数据: {}, data);log.info(来自连接: {}, connectionId);// TODO 业务逻辑处理}}第二个类文件双向类文件接收客户端消息并回复package com.testweb.testweb.tcp.web;importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.integration.annotation.ServiceActivator;importorg.springframework.integration.channel.DirectChannel;importorg.springframework.integration.ip.tcp.TcpReceivingChannelAdapter;importorg.springframework.integration.ip.tcp.TcpSendingMessageHandler;importorg.springframework.integration.ip.tcp.connection.AbstractServerConnectionFactory;importorg.springframework.integration.ip.tcp.connection.TcpNioServerConnectionFactory;importorg.springframework.integration.ip.tcp.serializer.ByteArrayCrLfSerializer;importorg.springframework.messaging.Message;importorg.springframework.messaging.MessageChannel;importjava.nio.charset.StandardCharsets;Slf4j Configuration public class TcpServerReplyConfig{Value(${tcp.server.reply.port:7799})// 与单向服务端端口区分 private int port;// 回复通道 Autowired Qualifier(tcpReplySendChannel)private MessageChannel tcpReplySendChannel;/** *1. TCP 连接工厂服务端 */ Bean public AbstractServerConnectionFactoryreplyServerConnectionFactory(){TcpNioServerConnectionFactory factorynew TcpNioServerConnectionFactory(port);// 关键拆包 / 粘包解决方案 // 使用换行符拆包文本协议或长度头物联网二进制协议 ByteArrayCrLfSerializer serializernew ByteArrayCrLfSerializer();// ByteArrayLengthHeaderSerializer serializer// new ByteArrayLengthHeaderSerializer();factory.setSerializer(serializer);factory.setDeserializer(serializer);factory.setUsingDirectBuffers(true);returnfactory;}/** *2. 接收通道 */ Bean public MessageChanneltcpReplyReceiveChannel(){returnnew DirectChannel();}/** *3. TCP 入站适配器接收客户端消息 */ Bean public TcpReceivingChannelAdapter tcpReplyInboundAdapter(AbstractServerConnectionFactory replyServerConnectionFactory, MessageChannel tcpReplyReceiveChannel){TcpReceivingChannelAdapter adapternew TcpReceivingChannelAdapter();adapter.setConnectionFactory(replyServerConnectionFactory);adapter.setOutputChannel(tcpReplyReceiveChannel);returnadapter;}/** *4. TCP 出站通道用于回复客户端 */ Bean(tcpReplySendChannel)public MessageChanneltcpReplySendChannel(){returnnew DirectChannel();}/** *5. 出站适配器发送回复 */ Bean ServiceActivator(inputChanneltcpReplySendChannel)public TcpSendingMessageHandler tcpReplySender(AbstractServerConnectionFactory replyServerConnectionFactory){TcpSendingMessageHandler sendernew TcpSendingMessageHandler();sender.setConnectionFactory(replyServerConnectionFactory);returnsender;}/** *6. 业务处理器接收客户端消息并回复 */ ServiceActivator(inputChanneltcpReplyReceiveChannel)public void handleReplyMessage(Messagebyte[]message){String datanew String(message.getPayload(), StandardCharsets.UTF_8);String connectionId(String)message.getHeaders().get(ip_connectionId);log.info(收到客户端消息: {}, data);log.info(来自连接: {}, connectionId);// 业务逻辑处理完后发送回复 String reply服务端已经收到消息现在给客户端回复: data;tcpReplySendChannel.send(org.springframework.messaging.support.MessageBuilder .withPayload(reply.getBytes(StandardCharsets.UTF_8)).setHeader(ip_connectionId, connectionId).build());}}这两个配置文件 大家可以按需选择。第一个类文件就是服务端只负责接收不会给客户端反馈第二个类文件接收后会反馈如果在使用中发现有需要完善的地方也欢迎大家留言~
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做电商网站前端用什么框架微网站开发一般费用多少

第一章:Open-AutoGLM为何一夜爆红?在人工智能模型快速迭代的浪潮中,Open-AutoGLM的突然走红并非偶然。这款由开源社区驱动的轻量级大语言模型,凭借其高效的推理能力与极低的部署门槛,在发布后短短24小时内便登上GitHub…

张小明 2025/12/29 3:19:28 网站建设

辽宁城乡建设集团成立网站网页版微信怎么删除聊天记录

EmotiVoice语音节奏控制功能上线:可调节语速停顿情感起伏 在有声读物的深夜陪伴中,你是否曾因机械平直的AI朗读而走神?在游戏NPC说出关键台词时,有没有期待过它能真正“愤怒”或“颤抖”?当虚拟助手一遍遍用同样的语调…

张小明 2025/12/29 3:19:28 网站建设

洱源网站建设中国建设网官网登录

正常的埃氏筛选法是定义一个bool型的数组,把所有数组的元素初始化为1.表示初始阶段所有数都是质数。开始对数组进行筛选,把所有含有2和2的倍数的所有数筛选掉。在把所有含有3和3的倍数的所有数筛选掉,再把含有5和5的倍数的所有数筛选掉.一直筛…

张小明 2026/1/5 5:12:22 网站建设

合肥高端网站开发网站建设毕业设计题目

中国DevOps平台选型进入深水区:技术自主与生态开放的平衡之道 随着中国科技自主化进程加速推进,DevOps平台作为企业数字化转型的核心基础设施,正在经历前所未有的变革。2025年的中国DevOps市场呈现出明显的分化趋势——一方面是以阿里云效为…

张小明 2025/12/27 20:34:34 网站建设

做手机网站一般要多少钱推广免费网站

如果你热爱个性化桌面,想要轻松下载Steam创意工坊中那些精美的动态壁纸,那么这款Wallpaper_Engine壁纸下载工具正是你需要的完美解决方案!基于Flutter框架构建,通过SteamCMD技术让你快速获取海量壁纸资源,完全免费且操…

张小明 2025/12/27 20:33:30 网站建设