자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi datasnap 세션유지 또는 재연결
2020.01.14 01:44
안녕하십니까?
datasnap에 델파이로 만든 안드로이드 앱을 tcp/ip로 연결했는데 시간이 지나면 세션이 끈깁니다.
이럴때 종료하고 다시 앱을 실행하지 않고 세션을 재연결하거나 아니면 세션연결을 유지 하는 방법이 있는지
질문드립니다.
검색하다보니 아래 글을 찾았습니다. 아래 방법으로 해야 하는건지 아래 방법으로 하려면 어떤식으로 하는게 좋을지...
경험 있으신분계시면 답변 부탁드립니다. 감사합니다.
"네트워크 프로그래밍에서 하트비트(Heartbeat)라는 개념이 있습니다.
네트워크가 연결된 후 일정기간 데이터 송수신이 없을 경우 연결이 닫히게됩니다.
이 연결이 자동으로 닫히는 것을 방지하기 위해 주기적으로 작은크기의 데이터를 주고받아 연결을 유지하는 개념입니다.
즉, 데이터스냅에서 연결을 유지하려면 하트비트 용도의 서버메소드를 하나 만들어 주기적으로 전송하면 연결을 유지할 수 있습니다.
자세한 내용은 네트워크 프로그래밍 관련 서적이나 인터넷 자료를 참고해 보세요."
Delphi datasnap 세션유지 또는 재연결
2020.01.14 01:44
안녕하십니까?
datasnap에 델파이로 만든 안드로이드 앱을 tcp/ip로 연결했는데 시간이 지나면 세션이 끈깁니다.
이럴때 종료하고 다시 앱을 실행하지 않고 세션을 재연결하거나 아니면 세션연결을 유지 하는 방법이 있는지
질문드립니다.
검색하다보니 아래 글을 찾았습니다. 아래 방법으로 해야 하는건지 아래 방법으로 하려면 어떤식으로 하는게 좋을지...
경험 있으신분계시면 답변 부탁드립니다. 감사합니다.
"네트워크 프로그래밍에서 하트비트(Heartbeat)라는 개념이 있습니다.
네트워크가 연결된 후 일정기간 데이터 송수신이 없을 경우 연결이 닫히게됩니다.
이 연결이 자동으로 닫히는 것을 방지하기 위해 주기적으로 작은크기의 데이터를 주고받아 연결을 유지하는 개념입니다.
즉, 데이터스냅에서 연결을 유지하려면 하트비트 용도의 서버메소드를 하나 만들어 주기적으로 전송하면 연결을 유지할 수 있습니다.
자세한 내용은 네트워크 프로그래밍 관련 서적이나 인터넷 자료를 참고해 보세요."
기본적으로 클라이언트가 인터넷 연결을 갑자기 끊어도 OnDisconnect 이벤트에 알림이 표시되지 않습니다. 이는 IO 작업이 시도되어 실패 할 때까지 소켓이 열린 상태로 유지되기 때문입니다. OS가 모든 TCP / IP 연결에 대해 연결 유지 패킷을 사용하도록 구성된 경우 해당 구성에 따라 연결 끊기 이벤트에 대한 알림이 표시됩니다. 연결별로이 동작을 제어하려면 TDSTCPChannel에서 EnableKeepAlive 및 DisableKeepAlive 메소드를 사용할 수 있습니다.
아래 주소를 참조해 보시면 자세한 내용을 보실 수 있습니다.
http://docwiki.embarcadero.com/RADStudio/Rio/en/Monitoring_and_Controlling_DataSnap_TCP/IP_Connections