2017-11-10 9 views
1

나는 UDP 오순절 리얼 타임 OS를 통해 통신하기 위해 스프링 통합을 사용합니다. 나는 메시지에서 IP 주소를 되찾고 싶다.데이터 그램 스프링 통합의 IP 주소를 얻으십시오

@Bean 
    public MessageChannel udpIn() 
    { 
    return new DirectChannel(); 
    } 

    @Bean 
    public UnicastReceivingChannelAdapter udpInboundAdapter() 
    { 
    UnicastReceivingChannelAdapter adapter = new UnicastReceivingChannelAdapter(8888); 
    adapter.setOutputChannel(udpIn()); 
    adapter.setListening(true); 
    adapter.setPoolSize(7); 
    adapter.start(); 
    return adapter; 
    } 

@ServiceActivator(inputChannel = "udpIn") 
    public void msgConsumer(Message<byte[]> message) 
    { 
    System.out.println("Message Received! Payload:" + Arrays.toString(message.getPayload())); 
    // HERE I want to get IP address 
    } 

답변

0

UnicastReceivingChannelAdapter는 생산 Message 같은 : 당신의 msgConsumer() 서비스 방법에서 그 헤더로 외모를 가지고

message = getMessageBuilderFactory().withPayload(payload) 
        .setHeader(IpHeaders.HOSTNAME, hostName) 
        .setHeader(IpHeaders.IP_ADDRESS, hostAddress) 
        .setHeader(IpHeaders.PORT, port) 
        .setHeader(IpHeaders.PACKET_ADDRESS, packet.getSocketAddress()) 
        .build(); 

.