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


相关推荐

  • linux 卸载cuda_华为qq启动异常请卸载重装

    linux 卸载cuda_华为qq启动异常请卸载重装Linux下CUDA卸载不完全与重装失败由于需要使用Tensorflow,需要安装CUDA与和cuDNN,第一次安装时,安装的CUDA版本太高,导致无法和Tensorflow匹配,因此需要卸载掉CUDA。卸载的方法:网上有说明可以通过以下语句卸载,但我并没有在相应目录下面找到卸载脚本,cd/usr/local/cuda/binsudo./uninstall_cuda_x.x.p…

    2025年9月20日
    7
  • 显卡矿机装linux教程,8张GTX1080Ti显卡加副电源矿机组装教程

    显卡矿机装linux教程,8张GTX1080Ti显卡加副电源矿机组装教程在经历一波短暂的回调后,最近比特币又持续升温,一度突破19000元大关,目前价格基本在18000-19000之间浮动,挖矿市场可谓是一片火爆!近日大风哥闲来无事,自己也倒腾了一台矿机来玩玩,特来大家分享一下安装教程及心得。说到挖矿,显卡当然是首当其冲了,而现阶段市售各型号的显卡也因虚拟币市场火热而处于货源紧缺的状态,可谓是一卡难求!赶巧笔者手上有几片GTX1080Ti,矿机的显卡就选用它们了!Em…

    2022年9月30日
    3
  • 一步一步学习androidNDK编程(hello world)

    一步一步学习androidNDK编程(hello world)上一篇博客,已经搭建好了windows下的linux环境(cygwine),这次我们试着写一个helloworld。首先需要去android的官网下载android-ndk压缩包,之后解压,进入解压后的目录,我们发现有一个ndk-build的脚本文件,这个脚本文件就是我们用交叉编译的文件。我们通过 “./ndk-build” 来运行该命令,如下图:    因为目前我们没有

    2022年4月19日
    48
  • C语言结构体详解_结构体组成

    C语言结构体详解_结构体组成结构体(struct)1、定义一般格式为:struct结构名{类型变量名;类型变量名;…}结构变量;结构名是结构的标识符不是变量名。下面举一个例子来说明怎样定义结构变量

    2022年8月2日
    9
  • APC 注入

    APC注入APC介绍APC(AsynchronousProcedureCalls,异步过程调用),APC是函数在特定的线程被异步执行。在Windows中APC是一种并发机制,用于异步的IO或

    2021年12月13日
    101
  • js正則表達式语法

    js正則表達式语法

    2021年12月15日
    33

发表回复

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

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