본문 바로가기
IT/IoT | Hardware

TI RTOS NDK 네트워크 tcp connect 연결 timeout 값 조정하기

잘 될때는 아무런 문제가 안되지만,,쩝 TCP 연결을 시도 했는데 상대방이 없거나 통신 두절인 경우 타임아웃 발생시까지 너무 오래 기다리고 있는 자신을 발견하게 된다!

 

안되면 그냥 한 5초 만에 결과를 알려줘!!!

이렇게 수정하고 싶은데, 음 이것도 쉽게 허락해 주지 않아.

 

암튼 대충 돌려보고 되는 코드는 아래와 같음

 

    /* TCP connction timeout - 5 second */
    uint32_t timeout = 5;
    CfgAddEntry(hCfg, CFGTAG_IP, CFGITEM_IP_SOCKTIMECONNECT, CFG_ADDMODE_UNIQUE, sizeof(uint32_t), (uint8_t *)&timeout, 0);

    uint32_t timeout_get1;
    /* Print the IP address information only if one is present. */
    int ret = CfgGetImmediate(hCfg, CFGTAG_IP, CFGITEM_IP_SOCKTIMECONNECT, 1, sizeof(uint32_t), (uint8_t *)&timeout_get1);
    UART_printf("Connection timeout (changed): %d %d\n", ret, timeout_get1);

 

CFGITEM_IP_SOCKTIMECONNECT 라는 설정 부분이 있어 이 부분의 값을 넣어 주면 되는 것 같다.

코드 처럼 5 라는 값을 써 주는 것도 이게 무슨 코드가 이렇게 복잡한지.

 

무튼 동작은 한다!!

Connect 0800a8c0:8913==================
failed connect (60)

코드 적용 전에는 60 에러 메시지를 받기까지 한 60초 이상 걸리는데, 코드 적용후에는 5초 정도 지나면 에러 출력한다.

물론 non blocking 처리해서 막 짤 수 있는 방법이 있겠지만, 로직이 브랜치가 많으면 힘듬.......

 

현재 값을 읽어 보려고 아래 읽는 코드도 넣어 봤다.

5를 넣고 읽으니 정상으로 읽히는 것을 확인 할 수 있었는데, 쩝 5를 쓰기 전에 암만 읽어도 읽을 수가 없네 즉, 초기값은 못 읽었다는 후문이........

 

마 그냥 쓰자 ^^;

BJ.

망망대해 표류하는 듯한... 하나 하나 찾기 너무 어렵다

7inchs 님의 사진, 출처: Pexels