2016-06-03 7 views
0

Ich verwende die Funktion connect in Linux. Wenn es keine Verbindung herstellen kann, wartet es immer auf eine Verbindung. Was ich tun möchte:Nicht blockierende Verbindung in Linux

  • Try
  • Wenn Erfolg zu verbinden, wird sie blockiert.
  • Wenn nicht, wird es versuchen, für zwei Stunden zu verbinden
  • Wenn nach zwei Stunden es nicht gelungen ist zu verbinden, wird es aufhören zu versuchen und nicht mehr blockieren.

Wie soll ich das tun?

Teil meines Code:

serv_addr.sin_port = htons(_params->port); 
_log.debug("connecting ..."); 
int co = connect(_socket,(struct sockaddr *) &serv_addr,sizeof(serv_addr)); 
if (co < 0) 
{ 
    return false; 
} 

_log.debug("connected "); 
+0

Sie könnten veranlassen, dass ein Signal gesendet wird, wenn eine Zeitüberschreitung z. 'alarm()' oder 'timer_create()'. – EOF

Antwort

0

wie folgt aussieht wurde vorher beantwortet: Verwenden Buchse (..., SOCK_NONBLOCK, ...) die Fassung zu erstellen.

Verwandte Themen