前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >recv、recvfrom[通俗易懂]

recv、recvfrom[通俗易懂]

作者头像
全栈程序员站长
发布2022-09-15 15:43:29
1.9K0
发布2022-09-15 15:43:29
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

1、recvfrom()

接收一个数据报并保存源地址。(这里是windows中的头文件,Linux的用法在下面的那个实例)

头文件:#include <sys/types.h> #include <sys/socket.h>

int recvfrom(int s, void *buf, int len, unsigned int flags, struct sockaddr *from,int *fromlen);

s:标识一个已连接 套接口的描述字。

buf:接收 数据缓冲区

len: 缓冲区长度。

flags:调用操作方式。

from:(可选) 指针,指向装有源地址的缓冲区。

fromlen:(可选)指针,指向from缓冲区长度值。

2、recv()

头文件:#include <sys/types.h> #include <sys/socket.h>

定义函数:int recv(int s, void *buf, int len, unsigned int flags); 函数说明:recv()用来接收远端主机经指定的socket 传来的数据, 并把数据存到由参数buf 指向的内存空间, 参数len 为可接收数据的最大长度. 参数 flags 一般设0. 其他数值定义如下: 1、MSG_OOB 接收以out-of-band 送出的数据. 2、MSG_PEEK 返回来的数据并不会在系统内删除, 如果再调用recv()会返回相同的数据内容. 3、MSG_WAITALL 强迫接收到len 大小的数据后才能返回, 除非有错误或信号产生. 4、MSG_NOSIGNAL 此操作不愿被SIGPIPE 信号中断返回值成功则返回接收到的字符数, 失败返回-1,错误原因存于errno 中. 错误代码: EBADF 参数s 非合法的socket 处理代码 EFAULT 参数中有一指针指向无法存取的内存空间 ENOTSOCK 参数s 为一文件描述词, 非socket. EINTR 被信号所中断 EAGAIN 此动作会令进程阻断, 但参数s 的socket 为不可阻断 ENOBUFS 系统的缓冲内存不足. ENOMEM 核心内存不足 EINVAL 传给系统调用的参数不正确.

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163451.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档