Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo determina la función recv el final de la recepción?

¿Cómo determina la función recv el final de la recepción?

Cómo determina la función recv el final de la recepción:

1 Por ejemplo, si hay un indicador de fin en el flujo de datos, cuando lea el indicador de fin, sabrá que la transmisión está completa y detener. Este método sólo se puede utilizar para transferir archivos de texto, no archivos con terminadores ni archivos binarios.

2. Pase primero una longitud y luego el receptor podrá controlar cuántos bytes de datos deben leerse antes de que se complete. Esto funciona para transferir cualquier archivo.

Ejemplo:

Código C/C++

La función de envío del cliente es: char line[MAXLINE] while ((fgets(line,MAXLINE,fd) ! =NULL) // fd es un puntero al archivo {send (connfd, line,strlen(line),0) // connfd es el socket} La función de recepción del servidor es: for (;;) {if ((n =recv(connfd, recvline,MAXLINE,0)>0)){recvline[n]>0 ){recvline[n]=0;fputs(stdout,recvline);else break;}}

Cuando el remitente deja de enviar, el receptor no tiene forma de saber que los datos se han enviado y, por lo tanto, siempre está en un bucle infinito. En este momento, se puede utilizar el método anterior para determinar si la recepción ha finalizado.