setsockopt질문
글쓴이: ddoman / 작성시간: 목, 2002/12/26 - 7:05오후
리눅스 2.4.18 한컴을 쓰는데,
bool nodelay = TRUE;
setsockopt( socket, IPPROTO_TCP, TCP_NODELAY, (const char*)&nodelay, sizeof( bool ) );
했는데, return값이 자꾸 -1이 나오네요.
그런데, sizeof( int )혹은...그냥 4라고 쓰면 되고,...3이나 2는 안되더라구요.
도대체 이유가 뭐죠?
당연히 bool값을 썼으니, 당근 사이즈도 sizeof(bool)이 되어야하는데
왜 안되는지..
Forums:
마지막 argument는...말이죠...
setsockopt의 prototype을 보면, 님께서 마지막 두개의 argument에대해 조금 혼동을 하신듯 합니다.
setsockopt의 prototype은
setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
입니다. 여기서 마지막 두개 즉 optval, optlen의 관계는 말이죠...
optval는 option value에대한 pointer이고, optlen은 바로 optval의 size를 넘겨주는 것인데요..
님께서 마지막 optlen을 잘못 이해하고 있는듯 합니다.
즉 마지막 arguement는
(const char*)&nodelay
즉 charater를 가르치는 pointer의 크기인 sizeof(nodelay) 가 되어야 하겠지요...
4 라고 적어죠도 pointer의 size와 같으니 되는 것은 당연하구요...
그 이하의 값은 에러가나는 것도 당연한 것이겠지요...
제가 설명을 잘 했는지..카카...
- by swhong in jgdr.net -
댓글 달기