lors d'envoi() retourne, il y a trois possibilités:Lorsque send() retourne dans la programmation de socket, qu'est-ce que cela signifie?
1. les données à envoyer a été copié dans le tampon du noyau
2. les données à envoyer a été envoyé par les pairs
3. les données à envoyer a été envoyé par les pairs et a reçu son ack
Être vraiment confus, je lis quelques morceaux de code sur le protocole TCP/IP lorsque nous utilisons la fonction send(), elle appelle la fonction sys_sendto() sous-jacente, et la fonction sys_sendto() utilise send_msg() pour effectuer le travail, tandis que send_msg() devient __send_msg() et enfin __send_msg() invoque scm_send() qui utilise à nouveau sa fonction sous-jacente __scm_send().
Dans l'ensemble, le flux de données exécute dans ce chemin:
send() ==> sys_sendto() ==> send_msg() ==> __send_msg() ==> scm_send() ==> __scm_send()
En fonction __scm_send(), Il copie les données à la mémoire tampon du noyau.
donc il semble que la première hypothèse est prouvée, est-ce exact, ou peut-être que j'ai raté un détail ou un malentendu?