-
짧은 질문, 긴 답변 (with socket통신)Socket 통신 2022. 2. 24. 02:08
질문:
아두이노 예제에서 초기 전원 투입시 초기화 하고 서버측 IP및 port 지정하여 연결 시켜서 데이터 보낸 후에도 계속 연결 되어 있는 상태로 쓰고 있는데 TCP서버 측의 연결이 끊겼을 때 이를 감지하여 재연결 하는 라이브러리가 있을까요?
답변:
재연결하는 라이브러리 함수는 따로 없습니다.
질문하신 내용 관련해서 정리한 자료 및 어떻게 프로그래밍 하셔야 하는지 알려드리겠습니다.
먼저, CATM1에서 세션이 종료되는 것은 두가지 이벤트로 확인할 수 있습니다.
첫번째는,
TCP 세션은 일반적으로 계속 연결되어 있지 않습니다. 기본 Idle Timeout값이 60초 입니다. 타임아웃 되기 전에
TCP로 세션으로 송수신하지 않을 경우 자동으로 컨넥션이 끊어 집니다.
<메뉴얼 원문>
TCP idle timer in seconds (0-300, default: 60). When there is no client/server activity over the predefined time, the socket is deactivated (Socket option TCP_KEEPINTVL)
두번째는,
peer에 의해 세션이 제거되었을때 이벤트가 발생합니다.
모뎀에서 체크할 수 있는 방법은 아래의 순서로 프로그래밍 하셔야 합니다.
1. 이벤트 셋팅
AT%SOCKETEV=<event_id>,<mode>
Defined values:
<event_id>: integer:
0 - All events, used only in execution command
1 - Rx buffer has more Bytes to read
2 - Socket deactivate due to idle timer expiry.
3 - Socket terminated by peer
4 - New connected socket is accepted/spawned from parent listening socket
<mode>: integer; unsolicited result response presentation:
0 - disabled
1 - enabled
이 경우 모든 이벤트를 체크하게 하는것이 좋습니다. 따라서 AT%SOCKETEV=0,1 로 이벤트 트리거를 활성화 합니다.
2. 이벤트 모니터링
말씀하신 소켓이 연결해제 되었는지 detection 하려면, 모뎀에서 출력되는 unsollicited 메시지를 체킹하셔야 합니다.
아래 4가지의 이벤트가 비주기적으로 트리거 됩니다.
4 cases:
1. Rx buffer has more Bytes to read.
2. Socket termination due to Idle timer expiration.
3. Socket terminated by peer.
4. New connected socket is accepted/spawned from listening socket.
이중에서 해당사항이 있는건 2,3번 이벤트 입니다. 아래와 같은 메시지로 이벤트가 출력 됩니다.
%SOCKETEV: <event_id> , <mode>, <socket_id>,<connected_socket_id>
여기서 첫번째 event_id만 파싱해서 값을 쓰시면 될것 같네요.
구현하시려면 RTOS에서 별도의 태스크를 만들어서 waitqueue에 걸어 두시고 체크루틴을 만들어서
해당 이벤트에 트리거 되었을때 다시 소켓 연결함수를 호출하시면 될 것 같습니다.
Murata Type1SC 모듈 구매, 자료 관련 문의
(주)아성코리아
전지만 이사 010-5418-8812 mlcc@asung.com
박상인 차장 010-6556-5405 sipark@asung.com
LTE-CATM1 내장형 모뎀 대량 구매 상담, 외주 개발, 협업 문의
(주)코드주
장병남 대표 010-8965-1323 rooney.jang@codezoo.co.krhttps://www.devicemart.co.kr/goods/view?no=14077527
https://smartstore.naver.com/codezoo/products/7153689192
'Socket 통신' 카테고리의 다른 글
Voice AI 모듈과 LTE CATM1을 이용한 작업 데모 (0) 2024.02.22 언제든지 데이터를 수신 받아서 처리하고 싶어요. (0) 2022.11.21 Cellular Library 개발 그리고 포팅 두번째 이야기 (0) 2021.09.25 Cellular Library 개발 그리고 포팅 첫번째 이야기 (0) 2021.09.25