函数原型:
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个包。