Syscall BSD#29
svc · unix #29
recvfrom
Reçoit un datagramme ou un segment de flux et enregistre éventuellement l'adresse de l'émetteur.
Prototype
int recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, int *fromlenaddr);Retour: int
Arguments
| Name | Type | Dir | Description |
|---|---|---|---|
| s | int | - | |
| buf | void | - | |
| len | size_t | - | |
| flags | int | - | |
| from | struct sockaddr | - | |
| fromlenaddr | int | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 29 |
| xnu-1486.2.11 | — | 29 |
| xnu-1504.15.3 | — | 29 |
| xnu-1504.3.12 | — | 29 |
| xnu-1504.7.4 | — | 29 |
| xnu-1504.9.17 | — | 29 |
| xnu-1504.9.26 | — | 29 |
| xnu-1504.9.37 | — | 29 |
Notes
Lorsque le pointeur d'adresse source est NULL, recvfrom dégénère en recv. Pour SOCK_DGRAM le noyau retire une grappe mbuf de so_rcv ; pour SOCK_STREAM il draine jusqu'à len octets ou la prochaine limite PSH. MSG_PEEK laisse les données dans le tampon, MSG_WAITALL prolonge l'attente jusqu'à atteindre len octets ou EOF, et MSG_DONTWAIT supplante O_NONBLOCK pour cet appel uniquement.
Détection
Une visibilité par octet nécessite un NEFilterDataProvider qui retourne .needRules sur le flux, puis inspecte chaque chunk NEFilterDataVerdict.dataWithVerdict. ES n'a aucun événement recv.
API associées
recvmsgrecvmsg_xreadsendtoselect