使用TCP套接字编程可以实现基于TCP/IP协议的面向连接的通信,它分为服务器端和客户端两部分,其主要实现过程如下
服务端:
socket→bind→listen→accept→阻塞直到接收到客户链接请求→read→处理请求→write→close
客户端:
socket→connect→write→read→close
服务器端流程
1.创建socket
socket是一个结构体,被创建在内核中
sockfd=socket(AF_INET,SOCK_STREAM,0); //AF_INT:ipv4, SOCK_STREAM:tcp协议
2.调用bind函数
将socket和地址(包括ip、port)绑定。
需要定义一个结构体地址,以便于将port的主机字节序转化成网络字节序
struct sockaddr_in serveraddr; //地址结构体
bind函数:
bind(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr))
3.listen 监听 将接收到的客户端连接端放入队列
listen(sockfd,10) //第二个参数是队列长度
4.调用accept函数,从队列中获取请求,返回socket描述符
如果无请求将会阻塞,直到获得链接