008
22.10.2004, 15:32 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
Hmm war nicht setsockopt, unter win ists glaub ich ioctlsocket, unter linux einfach nur ioctl oder so.
d.h so
C++: |
u_long v = 1; // v > 0 non blocking, v = 0 blocking ioctlsocket(sock,IONBIO,&v); //connect(...) // sollte er dann direkt "drüberspringen und nicht warten bis abgewiesen o.ä)
|
dann
C++: |
fd_set conn; struct timeval timeout; timeout.tv_sec = 5; // 5 Sekunden Timeout timeout.tv_usec = 0;
FD_ZERO( &conn ); FD_SET( sock, &conn );
int s = select( ((int)sock + 1), NULL, &conn, NULL, &timeout ); // das +1 ist wichtig, frag mich nicht wieso if( s > 0 ) { // verbindung ist da, socket ist writeable! }
|
Zitat: |
The parameter writefds identifies the sockets that are to be checked for writability. If a socket is processing a connect call (nonblocking), a socket is writeable if the connection establishment successfully completes. If the socket is not processing a connect call, writability means a send, sendto, or WSASendto are guaranteed to succeed. However, they can block on a blocking socket if the len parameter exceeds the amount of outgoing system buffer space available. It is not specified how long these guarantees can be assumed to be valid, particularly in a multithreaded environment.
|
-- class God : public ChuckNorris { }; Dieser Post wurde am 22.10.2004 um 15:33 Uhr von FloSoft editiert. |