java - 服务器不向 hashmap 添加地址和端口
问题描述
我有一个程序,它将连接到 UDP 服务器的每个客户端的 inetAddress 和端口放在哈希图中。这样做的原因是我可以从客户端获取消息将它们发送到服务器并将它们发送到哈希图中的其他一些客户端。
但是,当我这样做时,它只会将它放在哈希图中一次。我怎样才能为每个新客户端添加一个HashMap<InetAdress, Integer>
为每个新客户端连接添加一个?
服务器:
private static int port = 9001;
private static HashMap<InetAddress, Integer> clients = new HashMap<InetAddress, Integer>();
public static void main(String[] args) throws Exception {
DatagramSocket UDPSocket = new DatagramSocket(9002);
System.out.println("[SERVER] UDP Server successfully launched on port: " + port);
byte[] data = new byte[1000];
DatagramPacket receivePacket = new DatagramPacket(data, data.length);
while (true) {
UDPSocket.receive(receivePacket);
while(true) {
InetAddress ip = receivePacket.getAddress();
int port = receivePacket.getPort();
clients.put(ip, port);
}
}
}
客户:
public ChatClient() throws UnknownHostException, IOException {
Scanner scanner = new Scanner(System.in);
DatagramSocket UDPSocket = new DatagramSocket();
while(scanner.hasNextLine()) {
String message = scanner.nextLine();
InetAddress ip = InetAddress.getByName("127.0.0.1");
DatagramPacket packet = new DatagramPacket(message.getBytes(), message.getBytes().length, ip, 9002);
UDPSocket.send(packet);
}
}
解决方案
推荐阅读
- batch-file - 在不更改已经存在的环境变量的情况下更新 PATH
- python - 如何在python散点图中制作标准差和百分位带
- javascript - 在 TypeScript 中使用 supertest - 出现问题“无法调用类型缺少调用签名的表达式”
- amazon-web-services - AWS + Ansible 自动化
- angular - Ionic 4 / Capacitor PWA 应用不会更新 Firebase 托管的最新内容
- chisel - chisel-firrtl combinational loop handling
- vue.js - 为什么模板文字不输入新行?
- sql - PostgreSQL:查询 JSON 数组中的元素
- python - python - 如何迭代tensorflow中每个嵌套张量的第一个元素,python?
- javascript - AG Grid - 如果没有其他列被排序,则恢复默认排序