C++로 작성된 dll과 자바프로그램 통신....?
글쓴이: inbon / 작성시간: 토, 2005/08/13 - 10:06오전
KLDP 게시판에 올려도 되는지 의구심이 들지만
여기 여러 고수님들이 있기에 질문을 올립니다.
현재 제가 개발하는 것이
자바 VM 에 agent 로 들어가는 dll 라이브러리와
그 agent 에서 생성되는 정보를
자바프로그램을 이용하여 문서화, 도표화 하는 것인데.....
그 정보를 어떻게 주고 받느냐 하는 것입니다.
동일머신에서 돌리기 때문에 소켓통신보다는
좀 더 빠르고 효율적인 방법이 있을듯...^^
JNI로 할 수 있을듯 하지만
agent가 vm 에 붙어서 플러그인처럼 돌아가기 때문에
JNI로도 어떻게 해야 할지 제 지식으로는 알 수가 없습니다. -_-a
어떻게 하면 될까요?
그냥 소켓통신으로 할까요?
Forums:
JNI, socket- Java에서 주처리를 수행하고 자체 모니터
JNI, socket
- Java에서 주처리를 수행하고 자체 모니터링도 하는 프로그램구조라면, JNI권장.(Java프로그래머의 후책임요소가 강함, 자칫 DLL의 실패는 자바 프로세스의 종료로 이어질 수도 있음)
- C/C++프로그램의 잦은 업그레이드가 예상되거나, 모니터링을 C/C++에서 하려면 소켓통신 권장.(C/C++프로그래머의 후책임요소가 강함, 자바의 안정성에 좋음, 관리포인트가 늘어남)
* C/C++프로그램의 관리가 내부(회사내)에서 이뤄진다면, 전자, 외부(타사)의 DLL을 사용한다면 후자를 권고합니다.
그리고, socket통신이 생각하시는것 보다 그리 느리지 않습니다. un
그리고, socket통신이 생각하시는것 보다 그리 느리지 않습니다. unix domain socket의 경우, 시스템별로 상이하나(PCI?PCI-X?등 파라메터에 의해...) 대충 4 GBps를 선회할 수 있습니다.
정확한 테스트를 위해 iperf를 사용하여 로컬 통신 밴드위쓰를 검사해보도록 하세요. iperf는 구글에게 물어보면 바로 나옵니다.
현재는 개발이 모니터와 클라이언트가 한 부서내에서 이루어지고 있습니다.
현재는 개발이 모니터와 클라이언트가 한 부서내에서 이루어지고 있습니다.
C/C++ 에서 모니터링을 하는 구조라 후자가 좋을 듯 합니다.
iperf 로 체크 해보니 기본 파라미터로 동일 머신에 테스트해보니
[1912] 0.0-10.0 sec 343 MBytes 287 Mbits/sec
이정도로 나옵니다.
이 정도도 무리 없겠지요 ^^
조언 주셔서 감사합니다.
====================
In-Bon Kuh
http://inbon.net
GNU OSLab.
http://race.gnu.kr
====================
필요에 의해 커널 TCP/IP의 송신버퍼/수신버퍼크기를 늘려가면서 테스트
필요에 의해 커널 TCP/IP의 송신버퍼/수신버퍼크기를 늘려가면서 테스트하면,
최적의 상황을 찾아낼 수 있습니다.
코딩하고, 테스트하고 나중에 튜닝을 위해 이를 실험하시고,
setsockopt()를 써서 소켓의 송수신버퍼사이즈를 설정해 주세요. 그럼 보다 나은 결과가 기대됩니다.
댓글 달기