• spring boot udp或者tcp接收数据


    下面用的是 springboot内置integration依赖

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-integration</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.integration</groupId>
                <artifactId>spring-integration-ip</artifactId>
            </dependency>

    下面是一个类 用来接收udp协议和tcp协议的数据

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.integration.annotation.Filter;
    import org.springframework.integration.annotation.Router;
    import org.springframework.integration.annotation.ServiceActivator;
    import org.springframework.integration.annotation.Transformer;
    import org.springframework.integration.ip.tcp.TcpReceivingChannelAdapter;
    import org.springframework.integration.ip.tcp.connection.TcpNetServerConnectionFactory;
    import org.springframework.integration.ip.tcp.serializer.ByteArrayRawSerializer;
    import org.springframework.integration.ip.udp.UnicastReceivingChannelAdapter;
    import org.springframework.messaging.Message;
    
    @Configuration
    public class DataReceiveConfigration {
    
        
        @Bean
        public UnicastReceivingChannelAdapter getUnicastReceivingChannelAdapter() {
            UnicastReceivingChannelAdapter adapter = new  UnicastReceivingChannelAdapter(4567);//实例化一个udp 4567端口
            adapter.setOutputChannelName("udp");
            return adapter;
        }
        
        @Transformer(inputChannel="udp",outputChannel="udpString")
        public String transformer(Message<?> message) {
            return new String((byte[])message.getPayload());//把接收的数据转化为字符串
        }
        
        @Filter(inputChannel="udpString",outputChannel="udpFilter")
        public boolean filter(String message) {
            return message.startsWith("abc");//如果接收数据开头不是abc直接过滤掉
        }
        
    
        
       @Router(inputChannel="udpFilter")
        public String routing(String message) {
            if(message.contains("1")) {//当接收数据包含数字1时
                return "udpRoute1";
            }
            else {
                return "udpRoute2";
            }    
        }
        
        
       @ServiceActivator(inputChannel="udpRoute1")
       public void udpMessageHandle(String message) {
           System.out.println("udp1:" +message);
       }
       
       
        @ServiceActivator(inputChannel="udpRoute2")
        public void udpMessageHandle2(String message) {
            System.out.println("udp2:" +message);
        }
        
       
        
        
        @Bean
        public TcpNetServerConnectionFactory getServerConnectionFactory() {
            TcpNetServerConnectionFactory serverConnectionFactory = new TcpNetServerConnectionFactory(1234);
            serverConnectionFactory.setSerializer(new ByteArrayRawSerializer());
            serverConnectionFactory.setDeserializer(new ByteArrayRawSerializer());
            serverConnectionFactory.setLookupHost(false);
            return serverConnectionFactory;
        }
    
    
        @Bean
        public TcpReceivingChannelAdapter getReceivingChannelAdapter() {
            TcpReceivingChannelAdapter receivingChannelAdapter = new TcpReceivingChannelAdapter();
            receivingChannelAdapter.setConnectionFactory(getServerConnectionFactory());
            receivingChannelAdapter.setOutputChannelName("tcp");
            return receivingChannelAdapter;
        }
    
        
        @ServiceActivator(inputChannel="tcp")
        public void messageHandle(Message<?> message) {
            System.out.println(new String((byte[])message.getPayload()));
        }
    
    
    }
  • 相关阅读:
    BigDecimal用法详解
    Spring IOC的配置使用
    Spring IOC容器基本原理
    Spring IOC基础
    Spring基础
    Spring概述
    win7+jdk环境变量配置
    订单状态
    项目经理与项目管理整理
    top命令按内存和cpu排序
  • 原文地址:https://www.cnblogs.com/seakitl/p/11136978.html
Copyright © 2020-2023  润新知