C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[13561] [PostgreSQL|TCPIP] connection wrapper
DrK [whitekid] 2420 읽음    2007-11-21 17:38
프로젝트에서 데이터베이스 연결을 TZConnection을 이용해서 바로 PostgreSQL에 연결하여 사용합니다. 또한 다른 작업을 위해서 python으로 twisted 서버를 만들어 직접 연결하기도 하지요...

이렇게 하다보니 PostgreSQL 데이터베이스 서버가 외부에서 TCPIP로 연결이 가능하도록 설정되어있고, 데이터베이스 서버에서 방화벽으로 필요한 부분만 허용해서 사용하고 있습니다.

근디.. 이게 회사내에서 뿐만 아니라 다른데에서도 사용이 될 가능성이 있다고 하네요.. 허허..~ 외부에 DB를 모두 열어야되나? 하고 고민하고 있다가... TZConnection이 연결하는 TCPIP를 Wrapping해서 서버에 Tunneling해주는 것으로 해결봤습니다. (SSH Tunneling과 비슷하죠..)

이렇게 하니 외부에서는 DB를 직접 접근할 일도 없고, 그리고 기존의 코드도 같은 TZConnection을 사용하니 변경할 필요가  없어서 아주 깔끔하게 해결이 되어버리네요.. 흐흐.~ (약간의 삽질은 있었지만...)

클라이언트는 그냥 TTcpWrapper 콤포넌트에다가 연결할 서버/ 포트/ 로컬 포트 설정해주고 서버가 좀 복잡한데 ... Twisted를 이용해서 서버를 미리 실행해 놔야합니다.(우리 프로젝트에서는 이미 기존에 쓰던것이 있기에 그걸로 사용했죠.. 아마 이게 아니였다면 다른 서버로 변경했을듯...)

데모 및 소스 다운로드:
http://pds6.egloos.com/pds/200711/21/71/TcpProxyDemo.zip
http://pds7.egloos.com/pds/200711/21/71/twisted_tcpwrapper_server.py
http://pds6.egloos.com/pds/200711/21/71/TcpWrapper.pas

제 블로그 글: http://whitekid.egloos.com/1670410

근데 이걸 PostgreSQL 연결을 위해서 썻지만 실제로는 어떤 TCPIP도 사용 가능합니다. 파이썬 소스도 그냥 보면 이해갈 정도이니.. 델파이로 포팅하는건 쉬워서 다른 여러용도로 쓸만하게네요..

ps. 오랜만에 socket의 block, non-block을 왔다갔다하니. 머리가 지끈~ 하지만 문제가 깔끔하게 풀려서.. 한편 개운.~

+ -

관련 글 리스트
13561 [PostgreSQL|TCPIP] connection wrapper DrK 2420 2007/11/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.