java - 获取数据报的IP地址 spring-integration

标签 java spring udp spring-integration

我使用 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/

相关文章:

java - 在Spring中,有没有办法为 header 返回不同的Content-Type值?

java - 我想知道 'detached entity passed to persist' 发生的原因

c - 使用 UDP 发送字符

udp - 如何使用 mosh 连接到 NAT 后面的服务器

java - 如何更改存储为像素值的图像的对比度和亮度

java - EasyMock 意外方法调用预期 : 1, 实际 : 2 java. lang.AssertionError:

java - 在 Linux/Gnome 中同时右对齐和换行 SWT 标签中的文本

html - Bootstrap col-md 剪切标签的文字

networking - 选择多播 IP 地址

java - 如何使用 spring boot websocket 发送二进制文件?