C# TCP 및 타이머가 복수로 돌아갈때에 대해 여쭤봅니다.

  • 무엇을 하고자 하는지 : 클라이언트 하나에 서버가 동시에 연결되었을 때 여러개가 끊겼을 경우 전부다 다시 재접속되게 하고 싶습니다.

  • 현재 작성한 코드 중 문제가 되는 부분
    ReconnectTimer = new System.Threading.Timer(CheckConnection, tcpClientWithTimer, 5000, 5000);
    타이머는 끊길 경우 작동하게 구성했습니다.

뉴비여서 그런지 너무 어렵습니다. 알려주시면 감사합니다…

TCP는 항상 어렵죠.

연결을 시작하는 주체에 따라 다르지만 연결하는 쪽이 끊김 여부를 확인하는게 좋지요.

일정 주기로 healthcheck 요청을 보내서 응답 없으면 연결 끊고 재연결 하면 되지 않나요?

끊길 경우 타이머가 동작한다라… TCP 끊기는거 디텍팅이 생각보다 꽤 어려워서 (현장 가면 터지는)

저는 그냥 send, recv timeout 이나 일단 예외가 catch되면 끊겻거나, 끊어야 하는 상황으로 보고 소켓부터 다시만듭니다.

이건 오지랖이지만, 받으신 프로젝트가 혹시 Timer 왕창 만들어서 오만 기능들을 병렬적으로 동작하게 배치해둔 패턴이라면, 아마 열심히 공부한다고 해결될 문제는 아닐거같네요

아 늦어져 죄송합니다 ㅠ 답변 감사합니다. 타이머를 안쓰는 걸로 해결했습니다.

1개의 좋아요