fish-guts
Erfahrenes Mitglied
Guten Tag Allerseits
Ich habe einen kleinen Server, der auf Befehle von aussen wartet und diese dann ausführen soll.
Ich öffne den Socket, verbinde mit dem Sever und die Verbindung steht.
Nun kommt es manchmal vor, dass bei recv() einfach nichts mehr passiert. Weder ein gültiger noch ein ungültiger Wert wird zurückgeliefert.
So sieht der Code aus:
Nun ist es so, dass es manchmal tadellos funktioniert, aber manchmal eben leider nicht. Wenn mir jemand einen Tipp geben könnte, wäre ich sehr froh.
Vielen Dank schon im Voraus.
Liebe Grüsse
FG
Ich habe einen kleinen Server, der auf Befehle von aussen wartet und diese dann ausführen soll.
Ich öffne den Socket, verbinde mit dem Sever und die Verbindung steht.
Nun kommt es manchmal vor, dass bei recv() einfach nichts mehr passiert. Weder ein gültiger noch ein ungültiger Wert wird zurückgeliefert.
So sieht der Code aus:
Code:
static void rn_start(void)
{
int s,u;
char buf[IRCBUF_SIZE];
memset(&buf,0,sizeof(buf));
#ifndef _WIN32
if(signal(SIGALRM, timer_event_handler)==SIG_ERR)
{
addlog(2,"Error in signal()\n");
return;
}
set_timer(2);
#endif
create_files();
/* initialisiert den socket und verbindet mit dem server */
mainsock = sock_init();
if(mainsock<0)
{
rn_cput("Error initializing socket. Please restart services\n");
exit(EXIT_FAILURE);
}
addlog(1,"Services successfully started");
mainsock = sock_connect();
if(mainsock<0) {
printf("FATAL ERROR\n");
exit(EXIT_FAILURE);
}
/* hauptschleife wo er auf befehle wartet - bis hier funktioniert alles einwandfrei */
for(;;)
{
/* hier passiert der fehler - er hängt einfach, ohne irgendwas zu machen */
s = recv(mainsock,buf,IRCBUF_SIZE,MSG_PEEK);
printf("%s\n",buf);
printf("s: %i\n",s);
if(s>0)
{
u = recv(mainsock,buf,sizeof(buf),0);
char *pch = strtok(buf,"\r\n");
while(pch!=NULL)
{
strcpy(ircbuf,pch);
parse();
ircbuf[s]=0;
pch = strtok(NULL,"\r\n");
}
}
/* wird gar nie ausgeführt, weil das programm eben hängt */
else {
printf("Connection to Server lost. Please restart services\n");
exit(EXIT_FAILURE);
}
}
}
Vielen Dank schon im Voraus.
Liebe Grüsse
FG