tcp keepalive 설정을 했는데 잘 되지 않아요....

lsh7708의 이미지

안녕하세요

지금 보드가 서버랑 tcp 로 연결해서 주고 받는데 보드의 랜이 갑자기 빠졌을 경우

서버에서 연결 상태를 확인할려고 socket option 에서 keepalive 를 사용을 했는데 적용이 잘 안되는데요

client의 랜을 뽑으면 50초 후에 서버에서 연결이 끊어졌다고 나와야 되는데 계속 연결 된 상태로 나옵니다.

그런데 여기서 client의 랜을 다시 연결 하면 끊어질걸로 나오는데 왜 이러는지 잘 모르겠는데

혹씨 아시는분 있나요 ?

아래와 같이 설정했습니다.

소스 상에서

================================

int optval = 1; // enable KeepAlive
int optlen = sizeof(optval);
SOCKLEN_T len;

if (setsockopt(socket, SOL_SOCKET, SO_KEEPALIVE, &optval, optlen) < 0) {

printf("KeepAlive Set Error \r\n");

}

================================

커맨드에서 아래와 같이 적용

sysctl -w net.ipv4.tcp_keepalive_intvl=10
sysctl -w net.ipv4.tcp_keepalive_probes=2
sysctl -w net.ipv4.tcp_keepalive_time=30