2011-10-02 8 views
0

여러 클라이언트에 브로드 캐스트하려는이 코드를 example에 구현하고 있습니다. 직렬화 된 다른 객체를 보내기 위해 소켓을 사용하려고 시도하는 동안 socket (예제에서)이 객체를 통해 객체를 보낼 수 없다는 오류가 발생합니다. 데이터 그램 소켓도 객체를 보내고받을 수 없습니까?데이터 그램 소켓을 통해 개체 보내기 java

+0

코드를 표시하고 정확한 오류 메시지를 알려주십시오. –

+0

데이터 그램은 모든 패킷이 도착할 것이라고 보장 할 수 없으므로 개체를 보내는 데 적합하지 않습니다. –

+1

몇 가지 유용한 링크 : [Java Tip 40 : 데이터 그램 패킷을 통한 객체 전송] (http://www.javaworld.com/javaworld/javatips/jw-javatip40.html) 및 [Java에서 UDP의 객체 직렬화 전송 및 수신] http://stackoverflow.com/questions/3997459/send-and-receive-serialize-object-on-udp-in-java) –

답변

4

일반적으로 아니요. 데이터 그램 패킷은 일반적으로 비교적 작습니다. ObjectOutputStream에 랩핑 된 ByteArrayOutputStream으로 객체를 직렬화 한 다음 나중에 바이트 배열을 보내려고 시도 할 수 있습니다. 그러나 너무 빠르게 빠르게 커질 수 있습니다.

같은 Protocol Buffers 아마 당신은 하나의 패킷에서 더 많은 정보를 얻을 수보다 효율적인 직렬화 형식을 사용하지만, 일반적으로는 스트림 대신 단일 패킷에 직렬화 싶어 ... 그리고 데이터 그램 기반 프로토콜에 스트림 기반 프로토콜을 적용하기 시작하자마자, 신뢰성이 있어야 마자 TCP를 합리적으로 빨리 끝내게됩니다.

신뢰할 수있는 제약 조건 - 패킷 손실시 얼마나 심각한지를 포함하여 우리가하려는 일에 대해 자세히 설명해 주시면 더 많은 도움을 드릴 수 있습니다.

1

가장 좋은 방법은 사용 TCP 또는 같은 jGroups

위해 JGroups가 신뢰할 수있는 멀티 캐스트 통신을위한 툴킷 또 다른 라이브러리 중 하나이다.

관련 문제