socket函数创建了一个socket fd,看一下socket fd的概念:
套接字描述符是一个整数类型的值。每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接字的描述符,另一个字段存放套接字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描述符表但是套接字数据结构都是在操作系统的内核缓冲里。
所以可以看到这个fd能帮你找到你所对应的缓冲区,一个fd对应两个缓冲区,一个接受缓冲区,一个发送缓冲区,而send函数和recv函数就是围绕着着两个缓冲区进行的。
一、send函数
函数原型:
int send( SOCKET s,char *buf,int len,int flags );
功能:不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。