En la programación de socket en Linux necesito escribir datos en el socket pero no sé si el socket está abierto o cerrado. ¿Cómo sé que el socket está abierto y cerrado sin leer?Comprobar conexión abierta o cerrada? (En C en Linux)
printf("befor read%d\n", n);
bzero(buffer, MAX_SIZE_BUFFER);
n = read(sockfd, buffer, MAX_SIZE_BUFFER - 1);
printf("after read%d\n", n);
if (n <= 0)
{
break;
}
printf("befor write%d, s: %d \n", n , sockfd);
n = write(newsockfd, buffer, n);
if (n <= 0)
{
break;
}
he leído de sockfd y estoy segura que esta conexión está abierta. ¿Cuándo escribir búfer en newsockfd? No sé si newsockfd está abierto o cerrado. ¿Cómo comprobar que newsockfd está cerrado?
Sé el problema. en el medio de escribir la conexión cerrada. por ejemplo, escribir 1024 datos en 500 conexión cerrada y programa cerrado. cómo evitar esto?
Esto funcionará, y la otra alternativa es usar 'sigaction' para ignorar' SIGPIPE' (establezca su manejador en 'SIG_IGN'). – caf