0

我有一个 UDP 服务器,其中一项操作是向所有加入的客户端发送消息。服务器将客户端记录存储在 HashMap 中。

我需要创建一个可以创建数据包并将其发送到存储在哈希中的所有客户端的方法。我已经阅读了它,但我仍然不太明白如何使用下面显示的代码。

如何循环遍历哈希图并为每个元素/记录创建要发送的唯一数据包..(我查看了下面的 foreach 交互器,但我不知道如何处理它。

 Map<Integer, Integer> map = new HashMap<Integer, Integer>();
 for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
 System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}

我能想到的最好的就是这个

private void sendToAll(InetAddress clientIP, int clientPort, String message, String        fromUserName) {
for (Object key : cHASH.keySet())
{
Object value = cHASH.get(key);
//System.out.print(value);
//split value
//clientIP = [0]
//clientPort = [1]
//serverResponse(clientIP,ClientPort);
}
}
4

1 回答 1

0

这很草率,即使对我来说也是如此。但这很有效,谢谢大家:)对客户对客户方法的建议持开放态度

         for (Object key : cHASH.keySet())
    {
        Object value = cHASH.get(key);
        Object[] newArr = ((String) value).split(",");
        System.out.print("element 0 "+newArr[0]);
        clientPort = Integer.parseInt((String) newArr[1]);
        //clientIP = (InetAddress) newArr[0];
        //clientIP = (InetAddress) newArr[1];
         InetAddress.getByName((String) newArr[1]);

        try {
        byte[] buf = new byte[256];
        buf = sudMessage.getBytes();
        DatagramPacket sPacket = new DatagramPacket(buf, buf.length,
                clientIP, clientPort);
        serverSocket.send(sPacket);


    } catch (IOException ex) {
        System.err.println(ex);
    }   


    }
于 2013-04-22T05:10:30.183 回答