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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 在Spring AOP切面中启用新事务

    在Spring AOP切面中启用新事务在工作中有一个在切面中需要记录一下操作日志的需求,而且要求这些操作日志要存入数据库,并且无论业务层有什么异常,日志照常记录,那就不能沿用业务层的事务,而是需要新启一个事务了。sping的声明式事务就是靠AOP来实现的,一般事务都在业务层中启用,那如果要在AOP的逻辑中启用一个新的事务要怎么做呢?比如下面的例子://定义一个切点,这里指com.lidehang.remote包下所有的类的方法…

    2022年7月27日
    3
  • oracle查看密码修改记录_oracle查询数据库用户密码到期时间

    oracle查看密码修改记录_oracle查询数据库用户密码到期时间SQL>showuserUSERis”SYS”SQL>createusert1identifiedbyt1;createusert1identifiedbyt1*ERRORatline1:ORA-01920:username’T1’conflictswithanotheruserorrolenameSQL>dropuse…

    2022年7月28日
    2
  • golan激活码【在线破解激活】

    golan激活码【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    46
  • Tracert(traceroute)&Ping 工作原理分析

    Tracert(traceroute)&Ping 工作原理分析一、tracert工作过程分析Tracert命令用IP生存时间(TTL)字段和ICMP错误消息来确定从一个主机到网络上其他主机的路由。首先,tracert送出一个TTL是1的IP数据包到目的地,当路径上的第一个路由器收到这个数据包时,它将TTL减1。此时,TTL变为0,所以该路由器会将此数据包丢掉,并送回一个「ICMPtimeexceeded」消息(

    2022年9月24日
    1
  • 《Python爬虫大数据采集与挖掘》期末考试考题汇总带答案

    《Python爬虫大数据采集与挖掘》期末考试考题汇总带答案一、填空题1、爬虫技术的应用可以分为两大类:采集型爬虫、监测型爬虫。2、根据Web页面组成结构中的信息内容的生成方式不同,可以将Web页面分为静态页面、动态页面、以及伪静态页面三大类。3、Robots协议为了给Web网站提供灵活的控制方式来决定页面是否能够被爬虫采集。4、在浏览器中打开网站后,在网站首页的地址后面添加“/robots.txt”,如果网站设置了访问许可,按回车就可以看到网站的robots协议,即robots.txt文件内容。5、Web信..

    2022年6月16日
    40
  • css实现二级菜单_一二级菜单

    css实现二级菜单_一二级菜单CSS中hover出现二级菜单

    2022年4月22日
    180

发表回复

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

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