Skip to content
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

NameTypeDirDescription
sint-
bufvoid-
lensize_t-
flagsint-
fromstruct sockaddr-
fromlenaddrint-

Historique des versions

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard29
xnu-1486.2.1129
xnu-1504.15.329
xnu-1504.3.1229
xnu-1504.7.429
xnu-1504.9.1729
xnu-1504.9.2629
xnu-1504.9.3729

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