Link to home
Start Free TrialLog in
Avatar of bmanik
bmanik

asked on

How to use setsockopt under unix /solaris 2.6

I am trying to add a timeout to send and recv functions for TCPSocket  in C++ on unix/solaris 2.6 environment .
to solve I  am trying to use setsockopt with SO_RCVTIMEO for recv and I am getting the compilation errors as
code:
        struct timeval tv;
        tv.tv_sec =  timeout_n ;
        tv.tv_usec = 0 ;
        setsockopt( sockDesc , SOL_SOCKET , SO_RCVTIMEO , &tv , sizeof(tv) ) ;
        setsockopt( sockDesc , SOL_SOCKET , SO_SNDTIMEO , &tv , sizeof(tv) ) ;
Error:
Formal argument 4 of type const char* in call to setsockopt(int, int, int, const char*, int) is being passed timeval*.

Please advise.

ASKER CERTIFIED SOLUTION
Avatar of bkthompson2112
bkthompson2112

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of bmanik
bmanik

ASKER

man page doesnt specify SO_RCVTIMEO ,but I was following richard stevens book and coded accordingly , there must be some other way to set the time outs , pls advise .
> Formal argument 4

would be &tv.

Make sure you've cast it to the correct type.
Avatar of bmanik

ASKER

Thanks , I did type cast it and its now clean compiled , going ahead for testing it now .
You're welcome.  Hope it's working now.
Avatar of sunnycoder
check the man page .... this particular option, though existing is not necessarily working on all platforms.

It wont report an error but will be silently ignored
>I did type cast it and its now clean compiled , going ahead for testing it now

bmanik, how did the testing go?  is it working now?