recv、recvfrom[通俗易懂]

recv、recvfrom[通俗易懂]1、recvfrom()接收一个数据报并保存源地址。(这里是windows中的头文件,Linux的用法在下面的那个实例)头文件:#include  #includeintrecvfrom(ints,void*buf,intlen,unsignedintflags,structsockaddr*from,int*fromlen);s:标

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

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.net/163451.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python中的for i in range(range()函数的for循环)如何使用,详细介绍[通俗易懂]

    Python中的for i in range(range()函数的for循环)如何使用,详细介绍[通俗易懂]range函数的for循环1.定义2.两种形式3.可理解性例子4.range函数的特性详述4.1 左闭右开4.2 开始值默认为04.3 步长值默认为14.4 range函数的反向输出5.与列表list的使用6.range与list的区别1.定义range是一个函数,它返回的是一个可迭代对象,大多使用于for循环中。相当于C/Java里面的for(inti=m;i<n;…

    2022年8月12日
    5
  • idea2020 3.3激活码_通用破解码

    idea2020 3.3激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    232
  • Java程序员烂大街了吗?No or yes?

    Java程序员烂大街了吗?No or yes?Java程序员烂大街了吗?当下,越来越多的企业需要程序员,即使不是互联网公司,很普通的公司程序员也是标配。过去程序员属于稀缺岗位,而今随着技术的发展在二三线城市,甚至四线五线城市,小县城都有程序员的需求。作为一个发展越来越成熟的行业,Java程序员越来越多,自然会感觉程序员到处都是。小乐认为,虽然越来越多,也不必过分的担忧。虽然现在学Java做Java的人很多,但不难发现依旧有很多公司在招聘Java程序员。究其原因就是现在Java程序员虽然很多,但是精的很少。简单的增删该查估计一个门外汉网上找个开源

    2022年7月8日
    46
  • 模糊查询:Spring Data JPA 如何进行模糊查询(LIKE) ?「建议收藏」

    模糊查询:Spring Data JPA 如何进行模糊查询(LIKE) ?「建议收藏」SpringMVC+SpringDataJPA+模糊查询为了方便起见,service直接忽略,方便理解。一.方法一1.Controller层:方法参数如下,一定要加”%”+name+”%”/***@description:*@author:czx<15610554031@163.com>*@date:2018/1/22…

    2022年5月30日
    133
  • jmeter做接口压力测试_jmeter接口性能测试

    jmeter做接口压力测试_jmeter接口性能测试jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是免安装的,拿到安装包之后直接解压就可以使用,同时它在linux/windows/macos上都可以使用。  jmeter可以做接口测试和压力测试。其中接口测试的简单操作

    2022年9月26日
    0
  • windows安装anaconda python,pycharm[通俗易懂]

    windows安装anaconda python,pycharm[通俗易懂]windows安装anaconda python,pycharm

    2022年4月24日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号