::recv()-Timeout
Verfasst: So Sep 16, 2012 1:50 pm
Hallo Leute,
ich versuche gerade ein "timeout" hinzuzufügen.
Mein Problem ist, dass mein Server wartet, bis eine Eingabe gemacht wird, und bei diversen solchen Aufforderungen kommt es zur unnötigen Überlastung.
Die ::recv Funktion sieht bei mir so aus:
Habe hier als Flag "0", gibt es hier ein Flag für das non-blocking?
Aufruf:
Habe noch etwas mit select() mitbekommen, dass man das damit erledigt.
Weiß aber garnichts darüber und die Beispiele im Web verstehe ich nicht bzw. weiß nicht, wie ich das anpassen soll.
Würde mich freuen, wenn Ihr mir hier helfen könnt.
Danke im Voraus.
ich versuche gerade ein "timeout" hinzuzufügen.
Mein Problem ist, dass mein Server wartet, bis eine Eingabe gemacht wird, und bei diversen solchen Aufforderungen kommt es zur unnötigen Überlastung.
Die ::recv Funktion sieht bei mir so aus:
Code: Alles auswählen
int Socket::recv ( string& s ) const {
if(s.length() == 0){
return -1;
}
char buf [ MAXRECV + 1 ];
s = "";
memset ( buf, 0, MAXRECV + 1 );
int status = ::recv ( m_sock, buf, MAXRECV, 0);
if ( status > 0 || status != -1 ) {
s = buf;
return status;
}
else {
throw SockExcept("Fehler in Socket::recv");
return 0;
}
}
Code: Alles auswählen
::recv ( m_sock, buf, MAXRECV, 0);
Aufruf:
Code: Alles auswählen
void* newCommand(void* p)
{
Socket* sock = (Socket*) p;
sock->send("+Welcome\n");
string req;
sock->recv (req);
...
}
Weiß aber garnichts darüber und die Beispiele im Web verstehe ich nicht bzw. weiß nicht, wie ich das anpassen soll.
Würde mich freuen, wenn Ihr mir hier helfen könnt.
Danke im Voraus.