2013-04-21 44 views
0

我有一個UDP服務器,其中一個操作是向所有已加入的客戶端發送消息。服務器將客戶端的記錄存儲在HashMap中。客戶端的UDP服務器HashMap迭代

我需要創建一個方法,可以創建和發送數據包到存儲在哈希中的所有客戶端。我已經閱讀了它,但我仍然不太明白如何使用下面顯示的代碼。

我怎麼能遍歷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); 
} 
} 
+0

我認爲這是類似於諷刺的東西。我會得到賞金,但我必須等待2天,這是明天到期的,所以如果任何人都可以幫助,那麼很好,如果沒有,我會把它放在下巴上。 – TroothHertz 2013-04-22 01:04:13

回答

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); 
    } 


    }