我使用 spring 集成通过 UDP 与实时操作系统进行通信。我想从消息中取回 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
}
最佳答案
UnicastReceivingChannelAdapter
生成一个Message
,如下所示:
message = getMessageBuilderFactory().withPayload(payload)
.setHeader(IpHeaders.HOSTNAME, hostName)
.setHeader(IpHeaders.IP_ADDRESS, hostAddress)
.setHeader(IpHeaders.PORT, port)
.setHeader(IpHeaders.PACKET_ADDRESS, packet.getSocketAddress())
.build();
查看 msgConsumer()
服务方法中的这些 header 。
关于java - 获取数据报的IP地址 spring-integration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47224028/