Markus Pitha: Frage zur Socketprogrammierung mit C

Beitrag lesen

Hallo,
ich habe versucht einen kleinen Server zu basteln. Immerhin kann er schon eine Login Antwort senden :), aber ich habe mich gefragt, wie man es bewerkstelligen kann, dass der Server weiß, ob jemand seine Verbindung bereits beendet hat oder nicht? Wenn jemand nämlich die Verbindung beendet, bleibt in meinem Fall der Socket auf der Serverseite ewig aktiv. Was kann man dagegen tun? Der Rückgabewert von accept() bringt mich auch nicht weiter. Er kann ja nur -1 bei Fehlern und die Socketnummer beinhalten. Hier der kleine Ausschnitt, der sich um die eingehenden Anfragen kümmert.

while(1)    {
printf("\n Server: accept()...");
if ((new_socket = accept(serversocket, (struct sockaddr *)&clientinfo, &length)) == -1)    {
perror("accept()");
}
printf("Connected with %s on socket %d", inet_ntoa(clientinfo.sin_addr), new_socket);
printf("\nSending Login Message to .... %s", inet_ntoa(clientinfo.sin_addr));
/*Sending a msg to the login user*/
if (send(new_socket, loginmsg, loginlength, 0) == -1)    {
perror("send()");
}
}
close(serversocket);

Markus.

--
sh:( fo:| ch:? rl:( br:> n4:( ie:{ mo:) va:) de:] zu:) fl:( ss:| ls:] js:|