TCP发端:
socket
connect
send
recv
close
TCP收端:
socket
bind
listen
accept
send
recv
各函数资料:
1.connect 
   int connect(int sockfd, const struct sockaddr *addr,
                    socklen_t addrlen);
   功能:
     发送链接请求
   参数:
     sockfd:套接字文件描述符
     addr:目的地址存放空间首地址
     addrlen:IP地址的大小
   返回值:
     成功返回0
     失败返回-1 
 2.send 
   ssize_t send(int sockfd, const void *buf, size_t len, int flags);
   功能:
     发送数据
   参数:
     sockfd:文件描述符
     buf:发送数据空间首地址
     len:发送数据的长度
     flags:属性默认为0 
   返回值:
     成功返回实际发送字节数
     失败返回-1 
 3.recv
   ssize_t recv(int sockfd, void *buf, size_t len, int flags);
   功能:
     接收数据 
   参数:
     sockfd:套接字文件描述符 
     buf:存放数据空间首地址
     len:最大接收数据的长度
     flags:属性默认为0 
   返回值:
     成功返回实际接收字节数
     失败返回-1 
     如果对方退出,返回0 
注意:TCP收端的sockfd为accept的返回值,而不是套接字的返回值
 4.listen
   int listen(int sockfd, int backlog);
   功能:
     监听客户端发送的连接请求
     该函数不会阻塞
   参数:
     sockfd:套接字文件描述符
     backlog:允许等待的尚未被处理的三次握手请求的最大个数
   返回值:
     成功返回0 
     失败返回-1 
 5.accept
   int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
   功能:
     处理等待连接队列中的第一个连接请求
     该函数具有阻塞功能(如果没有人发送链接请求,会阻塞等待)
   参数:
     socket:套接字文件描述符
     address:存放IP地址的空间首地址
     addrlen:存放IP地址大小空间首地址
   返回值:
     成功返回一个新的文件描述符
     失败返回-1 
TCP通信流程:
发端发送SYN信号,收端收到后回复SYN+ACK,发端收到回复后,发送ACK给收端,则三次握手成功。
握手成功后,开始进行消息的收发,发送结束后,发端发送一个FIN,收端最后发送一条消息,然后发送ACK,停止结收数据,然后也发送FIN,发端收到FIN后,发送ACK,使收端关闭,则三次挥手结束。