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)
上一篇 2022年7月23日 下午5:16
下一篇 2022年7月23日 下午5:36


相关推荐

  • hive修改字段类型语句_hive的数据类型

    hive修改字段类型语句_hive的数据类型altertable表名changecolumn原字段名现字段名字段类型

    2025年8月27日
    8
  • “永恒之蓝”病毒防护[通俗易懂]

    “永恒之蓝”病毒防护[通俗易懂]“永恒之蓝”勒索蠕虫涉及多个Windows系统服务的远程执行命令,恶意代码会扫描开放的445文件共享端口!只要开机的情况下,无需用户任何操作,就能控制你的电脑!SMB服务进行网络攻击的蠕虫病毒,简单的说就是:你局域网内如果有一台机器中了这个病毒,它会向整个网络传播,这个是非常可怕的!现在著名的勒索病毒和挖矿病毒都是利用这个漏洞进行传播,中了勒索病毒,就是交钱数据也回不来。不能全指望杀毒软…

    2022年10月16日
    3
  • java三元操作符_JAVA 三元运算符

    java三元操作符_JAVA 三元运算符小编典典好吧 ternaryopera 中的行为就像这样 return value true falseconditi iftrueexpres iffalseexpre 另一种看待它的方式 return value true falseconditi iftrueexpres iffa

    2026年3月26日
    2
  • MATLAB拟合算法

    MATLAB拟合算法与插值问题不同 在拟合问题中不需要曲线一定经过给定的点 拟合问题的目标是寻求一个函数 曲线 使得该曲线在某种准则下与所有的数据点最为接近 即曲线拟合的最好 最小化损失函数 插值算法中 得到的多项式 f x 要经过所有样本点 但是如果样本点太多 那么这个多项式次数过高 会造成龙格现象 尽管我们可以选择分段的方法避免这种现象 但是更多时候我们更倾向于得到一个确定的曲线 尽管这条曲线不能经过每一个样本点 但只要保证误差足够小即可 这就是拟合的思想 拟合的结果是得到一个确定的曲线 先给出一组例子

    2026年3月16日
    2
  • SQL EXITS用法

    SQL EXITS用法比如在Northwind数据库中有一个查询为SELECTc.CustomerId,CompanyNameFROMCustomerscWHEREEXISTS(SELECTOrderIDFROMOrdersoWHEREo.CustomerID=c.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是Cu

    2025年6月24日
    5
  • 判断 checkbox 是否选中以及 设置checkbox选中

    判断 checkbox 是否选中以及 设置checkbox选中JS

    2022年7月1日
    26

发表回复

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

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