与是recv一样,有收就会有发,发送内容对应send函数,也是从服务端accept后或客户端connect后就可以用的函数,其说明如下:
函数功能:
发送服务端或客户端的数据
头文件:
#include <winsock2.h>
函数原型:
int send(int aID, const char *buf, int len, int flags);
返回值类型:
整型
返回值:
返回值小于0,socket报错。返回值等于0对方调用了close API来关闭连接,返回值大于0成功,返回值为发送的的数据长度
参数说明:
第一个参数aID,表示连接成功的套接字描述符。
注意:这一步对于服务端而言是上一步accept的返回值;对于客户端而言是connect的返回值,并非是第一步socket创建套接字的返回值,请大家理解不要搞混!
第二个参数buf为要发送的数据所在的缓冲区地址,即一个已经存好内容的字符数组
第三个参数len为要发送的数据的实际字节数+1。
第四个参数flags为发送数据时的附带标记 ,一般情况下设置为0。但可以选择下列设置:
MSG_DONTROUTE:表示不使用指定路由,对send、sendto有效
MSG_PEEK:对recv, recvfrom有效,表示读出网络数据后不清除已读的数据
MSG_OOB:对发送接收都有效,表示发送或接受加急数据
调用send函数整体代码的实现:
char sendBuf[200];//定义一个数组用来保存发送的数据 send(aID,sendBuf,strlen(sendBuf)+1,0);//用来发送服务端或客户端的数据
与recv同样,send函数缺省也是阻塞函数,直到发送完毕或出错才会返回。
需要注意,如果函数返回值与参数len不相等,则剩余未发送的信息需要再次发送。
本文固定URL:https://www.dotcpp.com/course/782
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程