### HCB DSP보드의 TCP 관련 소스 (영우씨엔아이 2025.12.11) ### 1. TVM_Rev_6586\HCB05\fa_network.c 의 315라인. 아래의 코드에서, FA_TCPServer Task를 생성하고 구동함. static void NetworkOpen() { // Create our local servers hEcho = TaskCreate( FA_TCPServer, "FA_TCPServer", OS_TASKPRINORM, 0x1400, 0, 0, 0 ); } 2. TVM_Rev_6586\HCB05\fa_server.c 의 168라인. 위의 NetworkOpen()에서 만들고 실행한 Task에 의해 아래 함수 호출됨. 코드를 보면, tcp socket만들고, 주소/포트 바인딩 후, client의 연결요청을 리스닝하는 전형적인 tcp server임. SOCKET FA_connect() { struct timeval timeout; int I = 1; timeout.tv_sec = 2; timeout.tv_usec = 0; stcp = socket(AF_INET, SOCK_STREAMNC, 0); setsockopt(stcp, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout)); setsockopt(stcp, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)); // setsockopt(stcp, IPPROTO_TCP, TCP_NOPUSH, &I, 4 ); if( stcp == INVALID_SOCKET ) return INVALID_SOCKET; // Set Port = 7, leaving IP address = Any bzero( &sin1, sizeof(struct sockaddr_in) ); sin1.sin_family = AF_INET; sin1.sin_len = sizeof( sin1 ); sin1.sin_port = htons(1002); // Bind socket if ( bind( stcp, (PSA) &sin1, sizeof(sin1) ) < 0 ) return INVALID_SOCKET; // Start listening if ( listen( stcp, 1) < 0 ) return INVALID_SOCKET; return stcp; } 3. SPB, TPB 도 모두 위와 같은 방식의 server 구동임. 4. 보드에서 실행되는 서버 프로그램은 OSI 7Layer의 최상위 Application Layer에 해당함. 따라서, 만약 서버 프로그램이 어떠한 이유로 다운 되었다하더라도, 물리계층인 NIC자체가 정상동작한다면, 외부에서 요청하는 Ping에 응답해야함. (외부의 악의적인 무차별 대량 Ping요청을 차단하기 위해 일부러 막은경우 제외) 만약, 연결이 끊어지는 문제가 발생한 상황에서 HCB가 Ping에 응답하지 않는다면, 먼저 HCB의 NIC나 보드자체의 다운을 의심해야 할 것으로 판단됨.