recv和recvfrom都是用來接收數(shù)據(jù)的函數(shù),但是在使用時有一些區(qū)別。
int recv(int sockfd, void *buf, int len, int flags);
其中,sockfd是套接字描述符,buf是用于存儲接收數(shù)據(jù)的緩沖區(qū),len是緩沖區(qū)的最大長度,flags是用于控制接收操作的標(biāo)志位。
int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *src_addr, socklen_t *addrlen);
其中,sockfd是套接字描述符,buf是用于存儲接收數(shù)據(jù)的緩沖區(qū),len是緩沖區(qū)的最大長度,flags是用于控制接收操作的標(biāo)志位,src_addr是用于存儲發(fā)送方地址信息的結(jié)構(gòu)體指針,addrlen是src_addr結(jié)構(gòu)體的長度。
基于UDP實現(xiàn)NTP服務(wù)的步驟如下: