首页 > 解决方案 > 服务器不向 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);
    }
}

标签: javanetworkingudpclient-server

解决方案


推荐阅读