ABOUT ME

코드주 오픈소스 IoT Cellular 모뎀과 IoT유심으로 만드는 IoT 통신 이야기

Today
Yesterday
Total
  • 짧은 질문, 긴 답변 (with socket통신)
    Socket 통신 2022. 2. 24. 02:08

     

    Murata Type1SC

    질문:
    아두이노 예제에서 초기 전원 투입시 초기화 하고 서버측 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에 걸어 두시고 체크루틴을 만들어서
    해당 이벤트에 트리거 되었을때 다시 소켓 연결함수를 호출하시면 될 것 같습니다.

     

     


    LTE-CATM1 내장형 모뎀 대량 구매 상담, 외주 개발, 협업 문의, vodafone IoT유심 문의
    (주)코드주
    장병남 대표 010-8965-1323 rooney.jang@codezoo.co.kr

     

    Vodafone Global IoT SIM Card : codezoo

    [codezoo] IoT Global SIM, IoT Connectivity, IoT Device

    smartstore.naver.com

Designed by Tistory.