zoukankan      html  css  js  c++  java
  • 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()));
        }
    
    
    }
  • 相关阅读:
    毕设进度21
    毕设进度20
    Javascript高级程序设计第三版-笔记
    前端踩过的坑
    thinkphp笔记
    PHP 发邮件《转》
    smarty笔记
    jquery笔记
    JS笔记
    php万年历
  • 原文地址:https://www.cnblogs.com/seakitl/p/11136978.html
Copyright © 2011-2022 走看看