java - 创建一个生成新 DatagramSockets 的循环?

标签 java variables loops

嗨,我想循环遍历我拥有的 n 个端口的列表,并为每个端口创建一个 DatagramSocket:

for(int i = 0; i < portList.size(); i++) {
    DatagramSocket socket[i] = new DatagramSocket();
    socket[i].connect(InetAddress.getLocalHost(), portList.get(i));
}

我知道我不应该使用 socket[i] 。只是为了表达我的意思,上面会生成:

DatagramSocket socket1 = new DatagramSocket();
socket1.connect(InetAddress.getLocalHost(), 2000);

DatagramSocket socket2 = new DatagramSocket();
socket2.connect(InetAddress.getLocalHost(), 2001);

DatagramSocket socket3 = new DatagramSocket();
socket3.connect(InetAddress.getLocalHost(), 2002);

DatagramSocket socket4 = new DatagramSocket();
socket4.connect(InetAddress.getLocalHost(), 2003);

我不太擅长 Java,所以这可能是一个愚蠢的问题:P

最佳答案

首先使用ArrayList来存储您的套接字:

ArrayList<DatagramSocket> socketList = new ArrayList<DatagramSocket>();
socketList.add(new DatagramSocket());
socketList.add(new DatagramSocket());
socketList.add(new DatagramSocket());
socketList.add(new DatagramSocket());

然后循环访问socketList:

for(int i = 0; i < portList.size(); i++) {
    socketList.get(i).connect(InetAddress.getLocalHost(), portList.get(i));
}

假设您有相同数量的端口,并在 socketList 中添加了 DatagramSocket。否则,它将在循环中的某个位置抛出一个 NullPointer

更新

来自user1753100的解决方案:

ArrayList<DatagramSocket> socketList = new ArrayList<DatagramSocket>();
for (int j = 0; j < portList.size(); j++) {
    socketList.add(new DatagramSocket());
}

关于java - 创建一个生成新 DatagramSockets 的循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12946778/

相关文章:

linux - gdb 命令 "until"如何能够跳过循环?

java - 为什么我们需要让javac来编译多个源文件?

jquery - 帮我理解这一行 jQuery

java - 将文本字段输入保存在变量下

loops - 使用循环添加到 yaml 列表

python - 检查输入是否是循环中的字符串

python - 从解析的数据生成简单的 RSS 提要

java - Maven - 无法激活 webstart

java - Spring Cloud Dataflow 将缓冲的消息发送到输出 channel

java - 如何显示使用 JUnit 运行的 Spring Test MVC 测试的完整堆栈跟踪