안녕하세요
전에 한번 올렸는데 아무도 답이 없어서 다시한번 올립니다.
네트웍 프로그램을 하다가 실행시에 에러가 발생해서 이렇게 글을 올립니다.
저의 현재 문제는
[oracle@libidohy service]$ ./server
setsockopt error: Protocol not available
그리고 해당 부분은
struct timeval timeout;
timeout.tv_sec = 5;
timeout.tv_usec = 0;
Setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout));
이부분 입니다.
뭐가 문제일까요? 만약 아신다면
좀 상세히 해 주세요 리눅스는 초짜라서 잘 모릅니다.
그럼..................
setsockopt 의 Protocol not available 에러는 SO_RCVTIMEO 옵션이 해당 소켓 종류에서 지원되지 않을 때 나는 것으로, 보통 소켓 타입이나 레벨 값이 맞지 않아서입니다.
sockfd 가 제대로 만들어졌는지(socket 반환값 확인)와 옵션을 SOL_SOCKET 로 쓰는지 확인하고, 수신 타임아웃은 select 나 alarm 으로 대체해 보세요.