gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:10:20 26 4
gpt4 key购买 nike

嗨,我想循环遍历我拥有的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com