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