N個のマルチキャストソケットを開く必要があります(Nは引数リストのサイズになります)。私はループ内の各Nソケットに同じデータを送り、最後に各ソケットを閉じます。私の質問は、try-with-resourcesブロックを使ってこれをどうやってやるのでしょうか?以下は、私は単一のリソースでこれを行うだろうかです:Java試行リソース不明リソース数
final int port = ...;
try (final MulticastSocket socket = new MulticastSocket(port)) {
// Do a bunch of sends of small packet data over a long period of time
...
}
私は複数のポートでこれを行うに考えることができる唯一の方法は以下の通りです:
final List<Integer> ports = ...;
final List<MulticastSocket> sockets = new ArrayList<>(ports.size());
try {
for (final Integer port : ports) {
sockets.add(new MulticastSocket(port));
}
// Do a bunch of sends of small packet data over a long period of time
...
} finally {
for (final MulticastSocket socket : sockets) {
try {
socket.close();
} catch (final Throwable t) {
// Eat the exception
}
}
}
は、より簡潔な方法はありますこれを達成するために、または私の提案された解決策は、それが得られるほど良いですか?
ラムダ式で 'port'は何ですか? – saka1029
@ saka1029ああ、そこにそれを修正しました。しかし、それはポイントではありません。ポイントは構造物です。詳細は学生に練習として残されます。 –