函数功能:

接收客户端或服务端传来的数据,也就是客户端和服务端都要用到

头文件:

#include <winsock2.h>

函数原型:

int recv(int aID, char *buf, int len, int flags);

返回值类型:

整型   

返回值:

返回值小于0,socket报错。返回值等于0没有接收到数据,返回值大于0成功,返回值即为接收到的数据长度

参数说明:

第一个参数aID,表示连接成功的套接字描述符。

注意:这一步对于服务端而言是上一步accept的返回值;对于客户端而言是connect的返回值,并非是第一步socket创建套接字的返回值,请大家理解不要搞混!

第二个参数buf,就是为要接收的数据所在的缓冲区地址,也就是一个空的字符数组的首地址,这里放结果。

第三个参数len为要接收数据的字节数。

第四个参数flags为发送数据时的附带标记 ,一般情况下设置为0。但可以选择下列设置:

MSG_DONTROUTE:表示不使用指定路由,对send、sendto有效 

MSG_PEEK:对recv, recvfrom有效,表示读出网络数据后不清除已读的数据 

MSG_OOB:对发送接收都有效,表示发送或接受加急数据

                                    

调用recv函数整体代码的实现:

char recBuf[200];//定义一个字符串用来保存客户端发来的数据
recv(aID,recBuf,200,0);//接收来自客户端或服务端的数据

需要注意的是,recv缺省是阻塞函数,直到收到信息或出错才会返回。

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)