2012-01-26 1 views
0

클라이언트가 중앙 서버에 연결된 클라이언트 - 서버 아키텍처가 있고이 중앙 서버가 두 개의 서버 (Server1과 Server2). Serializable 클래스를 사용하여 클라이언트에서 CentralServer로 Map Object를 전달합니다. 그런 다음 CentralServer에서이 Map Object를 가져 와서 키와 값을 가져 오려고합니다. 그 때문에 다음 코드를 사용하고 있습니다 :지도 개체에서 키와 값을 가져 와서 다른 서버로 보냅니다.

public void readObject(Map<String, byte[]> parObj) 
{ 
    for (String key : keys) 
    { 
     if(parObj.containsKey(key) == true){ 
      foundAnyKey = true; 
      byte[] values = parObj.get(key); 
      //Do Something here 
     } 
    } 
    if(foundAnyKey == true){ 
      //Do something here 
    } 
} 

제가 틀렸을 때 수정하십시오. 열쇠와 가치를 얻는 첫 번째 부분을하고 있습니까?

제 질문의 두 번째 부분은 어떻게 "a-f"로 시작하는 키를 Server1에 보내고 "f-z"로 시작하는 키를 Server2로 보낼 수 있습니까? 어떻게해야합니까? 내 MapObject 클라이언트를 형성 얻을 곳

System.out.println("Starting Server"); 
     ServerSocket ss = new ServerSocket(7776); 
     System.out.println("Server Started"); 
     Socket s = ss.accept(); 
     InputStream is = s.getInputStream();      
     ObjectInputStream ois = new ObjectInputStream(is);  
     MapObject mo = (MapObject) ois.readObject(); 
     s.close(); 

이것은 내 주에서

나는 다음과 같은 코드가 있습니다. 이제이 객체에서 키와 값을 가져 오려고합니다. 감사합니다.

+0

"== true"는 코드에 나타나면 안됩니다. "expression == true"가 표시되면 "expression"자체 만 사용하십시오. –

답변

1

당신이 질문하는 경우는 (당신이 삽입 순서에 대해 신경 경우) 당신이은 compareTo() 메소드를 정의한 TreeMap의이 (정렬 규칙을 가지고 당신이 의 LinkedHashMap을 살펴 다음지도 "주문"약이다). 그런 다음 루프 할 수있는 간단 방법

Set keys = map.keySet(); 

그리고 당신은 키 (이전에 주문) 설정을 통해 반복 할 수와 키.

0

질문에 어떤 문제가 있는지 명확히 할 수 있습니까? 키와 값을 가져오고 싶지만 코드에서 둘 다하고있는 것처럼 보입니다. 코드가 원하는 것을 수행하지 않는 문제를 지적 할 수 있습니까?

+0

좋습니다, 예. 나는 그 질문을 편집 할거야. 잠깐만 – unnamed