socket 프로그램과 방화벽은 상극

Posted 2012. 8. 16. 15:21

꼭 명심하자 

FTP등과 같이 socket을 이용하는 프로그램에선 방화벽은 필수로 해제하라는것.


이것때문에 몇시간을 삽질했던가....


java.net.SocketException: Software caused connection abort: socket write error




지난 2월 18일에 있었던 자바개발자 컨퍼런스 발표자료가 업데이트 되었다.
예전 사이트 jco.co.kr에 함께 업데이트가 되지 않는것이 다소 아쉽긴 하다.
이곳에 업로드를 해놓으면 혹시 저작권에 문제가 될까? 그럼 어여 삭제해야겠지만...
 





2-4였던 nGrinder부분은 용량이 너무 커서 올리지 못함.


앞단의 글은 Gson을 이용한 Json 문자열을 처리한 것이라면 이번엔 Jacson라이브러리를 이용한 문자열 처리다.
다음과 같은 형태의 Json 문자열을 넘겨받았다고 하자.

{
  "exData1": {
    "uIdx": 123,
    "uId": "abcdefg",
    "nickName": "길동이",
    "currentStage": 3
  },
  "exData2": {
    "cAmount": 13,
    "hType": "Yes"
  },
  "data": {
    "index": 2,
    "status": "default"
  },
  "success": true,
  "messages": [
    {
      "nextStage": 4,
      "nextPower": 85,
      "type": "Jump"
    },
    {
      "message": "점프되었습니다.",
      "type": "msg"
    }
  ]
}

Object Type과 Premitive, 그리고 배열형태까지 다양하게 분포되어 있다. 이를 Jacson 라이브러리를 이용하여 Java 객체로 변환하여 처리한것이 다음과 같다.

private void parsingJacson(String jsonStr)
{
  JavaData javaData = null;
  ObjectMapper om = new ObjectMapper();
  try
  {

//  Map<String, Object> m = om.readValue(jsonStr,new TypeReference<Map<String, Object>>(){});

   JsonNode root = om.readTree(jsonStr);

   // 배열에 있는 값들 가져오기
   boolean success = root.path("success").getBooleanValue();
   if(success)
   {
    JsonNode data = root.path("data");
    JsonNode ext1 = root.path("extData1");
     JsonNode ext2 = root.path("extData2");
    JsonNode ext3 = root.path("extData3");
     
    System.out.println("uIdx = "+ext1.path("uIdx").asInt();
    System.out.println("nickName = "+ext1.path("nickName").asText();
    
    List<String> typeList = root.path("messages").findValuesAsText("type");
    int arraySize = typeList.size();
    for (String string : typeList)
    {
        System.out.println("type::::" + string);
    }
   }
  }
  catch (Exception e)
  {
   // TODO: handle exception
  }
}

보다 자세한 설명은 Jacson 의 홈페이지 http://jackson.codehaus.org/ 이곳을 참조하자.

위의 소스를 구동하기 위해서는 다음의 두개의 jar 파일일 필요하다.

jackson-core-asl-1.9.4.jar

 

jackson-mapper-asl-1.9.4.jar

 


Map 형태로 분석해 주기 때문에 큰 난이도 없이 간단하게 파싱한 데이터를 처리할수 있어서 직관적인면이 참 좋다.

참고사이트 : http://stove99.tistory.com/20


« PREV : 1 : 2 : 3 : 4 : 5 : NEXT »