2008-11-11 3 views
2

C 서버와 Java 애플릿간에 데이터를 전달하는 가장 좋은 방법은 무엇입니까? 현재는 버퍼를 사용하고 memcpy를 사용하여 바이트를 복사하여 처리합니다. 그러나 객체가 변경되면 애플릿으로 전송되는 모든 인스턴스를 검색하고 변경해야합니다.C에서 Java로 데이터 전달

개체를 java에 전달하는 더 좋은 방법이 있습니까? 어떻게 할 건데?

명확화를 위해 편집 : C 서버에서 Java 애플릿으로 이동 중이며 Java 서블릿은 없습니다. 애플릿이 C 서버에 전달하는 유일한 것은 취할 조치를 알리는 16 진수입니다.

답변

4

는 그런 다음 지원되는 언어의 메시지를 읽고 쓸 수있는 코드를 생성, 그들은 당신이 구조화 된 데이터를 정의 할 수 Protocol Buffers

에서 살펴 봐야 할 수 있습니다. 유일한 catch는 C 언어 구현에 관심이 있다는 것을 알고 있지만 C++을 지원한다고 생각합니다.

+0

서버가 C++ 코드를 사용할 수있을만큼 간단 해 보이며, 현재 C 언어로 쓰여지고있다. 그래도 그걸 바꾸세요. – Malfist

1

두 응용 프로그램간에 소켓 연결을 열었을 것입니다. 객체를 바이트 배열로 직렬화하고 Java 서블릿을 같은 값을 가진 Java 객체로 비 직렬화하게 할 수 있습니다. 이 방법은 클래스 정의가 변경되면 코드를 두 곳에서만 변경하면됩니다.

1

XML 또는 C에서 protobuf로 객체를 직렬화하고 단일 디시리얼라이저를 사용하여 애플릿 측에서 객체를 비 직렬화 할 수 있습니다. 나는. 비 직렬화를 수행하는 클래스가 두 개 이상 없습니다. 직렬화 버전을 사용자에게 알려주고 비 직렬화를 수행하는 객체가 이전 버전과 호환되지 않는 경우 예외를 throw합니다. 코드 전체에서 직렬화 및 직렬화 해제를 수행하는 것은 나쁜 습관입니다.

+0

성능이 문제가되면 좋은 해결책이 아닐 수도 있습니다. XML은 매우 공간 효율적이지 않다. –

+0

애플릿 사용자 중 일부는 전화 접속 중이기 때문에 전화가 걸릴 것이다. – Malfist