2010-01-28 3 views
3

바이너리 통신이 있습니다. 저는 초보자 인 java에서 java.sun.com 튜토리얼에서 배울 수있는 평범한 텍스트를 사용합니다. 따라서 어떤 이점이 바이너리 소켓을 가지고 있는지 알고 싶습니다. 왜 내가 그것을 사용해야합니까? 그리고 바이너리 통신에 대해 어떤 자원을 제안 할 수 있습니까?바이너리와 비 바이너리 소켓킹 Java

답변

1

극단적 인 성능과 같이 특정 이유가있는 경우에만 소켓을 통해 이진 데이터로 직접 작업 할 수 있습니다. 그러한 이유가 있다면 그것을 알고, 바이너리 데이터를 소켓을 통해 직접 사용한다고해서 고성능이 보장되는 것은 아닙니다.

이 낮은 수준에서 노동 집약적이고 오류가 발생하기 쉬운 직장에서 프로그래머를 보호하면서 네트워크 통신을 용이하게하기 위해 많은 자바에서 제공하는 추상화와 라이브러리가 있습니다

은 몇 가지 예입니다.

2

소켓을 통해 바이너리 데이터를 보내는 것이 분명히 대역폭 사용 측면에서 더 효율적일 것입니다. 그러나 소켓을 통해 데이터를 마샬링 및 비 정렬 화해야하는 복잡성도 증가합니다. 성능이 중요하지 않은 경우 텍스트 데이터 (XML, JSON 등)를 보내는 것이 많은 상황에서보다 직관적이고 쉽게 개발 될 수 있습니다.

+1

디버그하기 쉽다는 것은 말할 것도없이. 당신이 패킷을 스니핑 할 수 있고 내용이 사람이 읽을 수 있기 때문입니다. – Matt

+0

그건 물론 사실입니다. –

3

하나의 Java VM에서 다른 Java VM으로 소켓 연결을 통해 Objects을 다른 바이너리로 쉽게 전달할 수 있도록 해주는 Object stream을 참조하십시오 (필요한 경우 네트워크를 통해).

자바 썬 튜토리얼은 좋은 자료입니다. Basic I/O section을 참조하십시오.

1

다른 답변에서 언급했듯이 절대적으로 필요한 경우가 아니면 원시 소켓 통신을 피하십시오. 필자는 필요에 따라 다른 언어를 사용하는 클라이언트와 쉽게 통신 할 수 있고 디버깅하기가 훨씬 쉬워 짐으로서 XML 대신 객체 대신 통신 데이터 형식을 제안합니다. XStream은 최소한의 지원 코드로 객체 < -> xml 변환을 용이하게하는 훌륭한 라이브러리입니다.

+0

제안 해 주셔서 감사합니다 !! –

관련 문제