2022-1-9:send函数

函数原型:

int  send( SOCKET s, const char *buf, int  len, int flags);

函数的作用:

在socket编程当中,我们在建立好连接之后,接下来就是数据的交互,即发送数据和接收数据,接收就用recv函数,发送就要借助send这个函数。send函数和recv函数一样,发数据也不是由他来完成,他只是把数据拷到底层的协议空间里。发送和接收其实都是底层协议在干。

参数解释:

参数一:你要让哪个socket来发。填他的文件描述符。

参数二,参数三:要发送的内容你存在哪里的,把他的地址传进来,把他的长度传进来。

参数四:不解释,直接填0。

返回值:如果成功发送,他返回成功发送的字节数,失败返回SOCKET_ERROR

伪代码演示:

SOCKET fd1=socket(...);
bind(...);
listen(...);
SOCKET fd2=accept(...);

char buf[1024]={.....};
send(fd2,buf,sizeof(buf),0);

说明:

1,这个buf的大小是并没有死规定,需要就实际情况来判断。实际情况的意思就是,如果传输的数据就是100字节,为了节约考虑,空间就设100即可。好比如果只有100吨货,没必要来个拉1000吨的车,浪费!

2,数据传递一次的基本单位是1500字节,但是这1500字节的空间中有一部分固定开支,即ip包头,tcp或者udp包头,还有结束标志,这三个东西要固定开支不到100字节,所以这个buf上限设置个1400也没问题。也可以超过1500,但是底层会进行分片处理。就是根据数据量打成n个包。

上一篇:TCP通信客户端和服务端实现代码


下一篇:Linux实时补丁即将合并进Linux 5.3