2012-05-25 8 views
2

TClientSocket 및 TServerSocket을 사용하여 서버와 통신하는 경우 때때로 다음과 같은 예외를 발생시키는 서버에서 연결이 끊어 질 수 있습니다. WsaSend, acess violation 또는 Client에서 오류 발생 : Asychronious 소켓 오류.열린 연결 유지 TCP/IP

마녀는 이러한 오류를 복구하고 연결을 유지하는 가장 좋은 방법은 무엇입니까?

+0

는 내가보기 엔 인디, 소켓 구성 요소는 여전히 유지되고 있는지 확실하지 않습니다를 추천 ... – ComputerSaysNo

+0

이 왜 변화라고 생각합니까 확인 인디에게 이걸 고칠거야? –

답변

5

"무엇을해도 관계를 열어 두는 것"같은 것은 없습니다. 케이블이 잘 리면 어떻게 될까요? 당신이 할 수있는 최선의 방법은 중간 라우터가 당신이 여전히 그 연결을 사용하는 것에 관심이 있음을 알리고, 모든 오류를 조심스럽게 다루고, 필요한 경우 연결을 다시 설정하기 위해 일정 간격으로 하트 비트를 보내는 것입니다.

1

위대한 질문 ... 당신이 받고있는 것은 WSAECONNABORTED (비동기 소켓 오류 10053)입니다.

내 코드에서 어떻게 발생하지 않습니까? 음, Keepalive라는 이름이 있습니다. Keep-Alive라는 이름을주의 깊게 살펴보면, 연결을 유지하기 위해 Null 데이터를 연결 (단방향 일 수 있음)으로 보내면됩니다.

나는 TmrKeepAlive라는 이름의 Timer를 만들고, 그 간격을 5000ms (5 초), More info on KeepAlive으로 설정했다.

편집 : 당신이 당신의 자신의 킵 얼라이브 메커니즘을 작성하지 않으려면 또한, this 밖으로