Я хочу отправлять многочисленные сообщения udp клиентом udp, как мне этого добиться? - PullRequest
0 голосов
/ 08 апреля 2019

Я хочу отправить множество сообщений udp клиентом udp одновременно, но демо-версия отправляет только одно сообщение. Как я могу добиться этого?

С помощью демонстрационного кода я могу отправлять только конечное количество сообщений.Я хочу использовать while (true) для отправки сообщения, как я могу его достичь?

public static void main (String [] args) {Connection connection = UdpClient.create () .host ("localhost") .port (8080) .handle ((udpInbound, udpOutbound) -> {return udpOutbound.sendString (Mono.just (" end ")). sendString (Mono.just (" end1 ")). sendString (Mono.just("end2"));}) .connectNow (Duration.ofSeconds (30));connection.onDispose () .block ();}

1 Ответ

0 голосов
/ 08 апреля 2019

Вы можете использовать Flux вместо Mono, если хотите отправить более одного сообщения.Один sendString(Flux) вызов лучше по сравнению с подходом со многими sendString(Mono) вызовами.В приведенном ниже примере используется Flux.interval, поэтому у вас есть бесконечный поток, который отправляет сообщения каждые 100 мс.Кроме того, когда у вас есть бесконечный поток, вы должны переключаться на сброс на каждой стратегии

Connection connection =
        UdpClient.create()
                 .host("localhost")
                 .port(8080)
                 .handle((udpInbound, udpOutbound) ->
                         udpOutbound.options(NettyPipeline.SendOptions::flushOnEach)
                                    .sendString(Flux.interval(Duration.ofMillis(100))
                                                    .map(l -> l + "")))
                 .connectNow(Duration.ofSeconds(30));
...