我有一个程序,将每个连接到udp服务器的客户端的inetaddress和端口放在hashmap中。这样做的原因是,我可以从客户端接收消息,然后将它们发送到服务器,并将它们发送到hashmap中的其他客户端。
但是当我这样做的时候,它只在hashmap中放一次。我怎么能让每一个新客户 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);
}
}
暂无答案!
目前还没有任何答案,快来回答吧!