tcp socket keepalive setting
SOCKET에 대한 keep alive option 주기.
tcp 영역에서 알아서 해주는데, 로직상에서 타임아웃을 걸어 끊고있다면 의미없음.
OS마다 지원여부가 다르므로 확인 후 사용 필요.
int s;
int optval;
int optlen = sizeof(optval);
/* Set the option active */
optval = 1;
optlen = sizeof(optval);
if(setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (char*)&optval, optlen) < 0) {
perror("setsockopt()");
LOG(TAG, "WEBSOCKET keep alive option fail.");
}
/* Check the status again */
if(getsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (char*)&optval, &optlen) < 0) {
LOG(TAG, "WEBSOCKET keep alive option fail.");
perror("getsockopt()");
}
LOG(TAG, "WEBSOCKET KEEPALIVE is %s\n", (optval ? "ON" : "OFF"));
tcp 영역에서 알아서 해주는데, 로직상에서 타임아웃을 걸어 끊고있다면 의미없음.
OS마다 지원여부가 다르므로 확인 후 사용 필요.
int s;
int optval;
int optlen = sizeof(optval);
/* Set the option active */
optval = 1;
optlen = sizeof(optval);
if(setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (char*)&optval, optlen) < 0) {
perror("setsockopt()");
LOG(TAG, "WEBSOCKET keep alive option fail.");
}
/* Check the status again */
if(getsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (char*)&optval, &optlen) < 0) {
LOG(TAG, "WEBSOCKET keep alive option fail.");
perror("getsockopt()");
}
LOG(TAG, "WEBSOCKET KEEPALIVE is %s\n", (optval ? "ON" : "OFF"));
댓글