سؤال

هل هناك أي طريقة في بيئة Win32 ل"لحن" المهلة على مكالمة connect() مأخذ؟ على وجه التحديد، وأود أن زيادة طول المهلة. مآخذ في استخدام وغير مؤمن. شكرا!

هل كانت مفيدة؟

نصائح أخرى

ويمكنك محاولة استخدام SO_RCVTIMEO وSO_SNDTIMEO خيارات مقبس لتحديد مهلة لأية عمليات مأخذ. مثال:

struct timeval timeout;      
timeout.tv_sec = 10;
timeout.tv_usec = 0;

if (setsockopt (sockfd, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout,
            sizeof(timeout)) < 0)
    error("setsockopt failed\n");

if (setsockopt (sockfd, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout,
            sizeof(timeout)) < 0)
    error("setsockopt failed\n");

ويمكنك أيضا محاولة التنبيه (). عينة:

signal( SIGALRM, connect_alarm ); /* connect_alarm is you signal handler */
alarm( secs ); /* secs is your timeout in seconds */
if ( connect( fd, addr, addrlen ) < 0 )
{
    if ( errno == EINTR ) /* timeout, do something below */
        ...
}
alarm( 0 ); /* cancel the alarm */

لا، هذا غير ممكن. يمكن تخفيض المهلة الاتصال الافتراضية، ولكن ليس زيادة.

scroll top