2012-07-18 4 views
5

TLDR : 때때로 실패하는 TCP 서버에 자동으로 다시 연결하기위한 재사용 가능한 코드가 있습니까?자동으로 TCP 호스트에 다시 연결


나는 서버 응용 프로그램을 쓰고 있어요 - 그것은 hal를 호출 - 다른 서버에 일부 TCP 연결을 열고 그 - 그 xbmc 중. 원래 xbmc 오류가 발생했을 때 xbmc 오류 처리가 중단되고 해당 감독자가 다시 시작하도록 원래 작성했습니다.

분명히 이것은 erlang에서 영구 TCP 연결을 수행하는 좋은 방법이 아닙니다. 우선, 실제로 작동하지 않습니다. xbmc이 실패하면 프로세스가 너무 빨리 다시 시작되고 관리자가 전체 hal 프로그램을 종료합니다. 둘째로, 나는 이걸 위해 감독관을 사용하지 않아야 할 것 같습니다 : Erlang Supervisor Strategy For Restarting Connections to Downed Hosts (내가 읽었을 때,이 연결된 질문은 "감독관이이를 해결합니까?"이며 내 질문과 중복되지 않습니다)

저는 이것은 합리적으로 일반적인 사용 사례처럼 들리 겠지만, TCP 연결은 가능한 한 아래쪽에있는 호스트와도 연결되어 있습니다. 이를 달성하기 위해 사용해야하는 OTP 또는 다른 라이브러리 코드가 있습니까?

답변

3

아니요, OTP에는이 기능이 없습니다.

본인이 직접 작성한 횟수를 감안할 때 적절하게 연결 관리 라이브러리를 작성해야 할 때입니다. 특히 연결 시도 및 결과의 최근 히스토리를 고려하는 엔드 포인트 주소 (호스트 이름 및 포트)를 제공하고 호스트 이름 검색에서 리턴 된 여러 주소를 사용하여 여러 목적지가있는 엔드 포인트에 대한 빠른 오류 복구를 수행 할 수 있습니다.

+0

감사합니다. 다음 번 오픈 소스 프로젝트에서이 연결 관리자를 제안합니다 : D –

+0

필자는 필자가 이제는 더 많이 또는 덜 작성하고 있습니다. 출시 될 때 답변을 업데이트하겠습니다. – archaelus