recv()报错,返回值为-1
recv函数用于接收对端socket发送过来的数据。
recv函数用于接收对端通过socket发送过来的数据。不论是客户端还是服务端,应用程序都用recv函数接收来自TCP连接的另一端发送过来数据。
函数声明:
*ssize_t recv(int sockfd, void buf, size_t len, int flags);
sockfd为已建立好连接的socket。
buf为用于接收数据的内存地址,可以是C语言基本数据类型变量的地址,也可以数组、结构体、字符串,只要是一块内存就行了。
len需要接收数据的长度,不能超过buf的大小,否则内存溢出。
flags填0, 其他数值意义不大。
函数返回已接收的字符数。出错时返回-1,失败时不会设置errno的值。
如果socket的对端没有发送数据,recv函数就会等待,如果对端发送了数据,函数返回接收到的字符数。出错时返回-1。如果socket被对端关闭,返回值为0。
如果recv函数返回的错误(<=0),表示通信通道已不可用。
函数用法参考:[https://www.freecplus.net/0047ac4059b14d52bcc1d4df6ae8bb83.html]
##调试时,前面的一系列函数皆无报错
再仔细检查参数,发现recv()的第一个参数需要填一个已近建立好的sockfd;
建立socket连接使用accept()函数,使用时要用一个sockfd去接accept返回值方可建立成功。