套接字接口:
套接字接口是一组函数,它们与Unix I/O函数结合起来,用以创建网络。从Unix程序的角度看,套接字就是一个有相应描述符的打开文件。函数:
socket( ):客户端和服务器端使用socket( )创建一个套接字描述符;
int socket(int domain,int type,int protocol);
domain :一般参数为AF_INET 表明我们正在使用因特网;
type:一般为SOCK_STREAM表明这个套接字是因特网连接的一个端点;
需要注意的是此时返回的描述符并不能用于读写。
conndect( ):试图与套接字地址为serv_addr的服务器建立一个因特网连接。
int connect(int socketfd,struct sockaddr *servaddr,int addlen);
如果连接成功,sockfd 描述符现在就准备好可以读写。
socket( )和connect( )可以返回一个客户端套接字描述符
bind( ):告诉内核将my_addr中的服务器套接字地址和套接字描述符sockfd 联系起来
int bind(int sockfd,struct sockaddr *my_addr,int addrlen);
listen( ):将一个主动套接字sockfd 转化成一个监听套接字,以接受来自客户端的连接请求
int listen(int sockfd,int backlog);
socket( ) listen( ) bind( )结合可以创建一个服务器端的监听描述符
accept( ):通过调用来等待来自客户端的连接请求
int accept(int listenfd,struct sockaddr *addr ,int addlen);
accept( )等待来自客户端的连接请求到达listenfd,然后在addr中填写客户端的套接字地址,并返回一个已连接描述符;
监听描述符、已连接描述符
监听描述符工作在服务器端,一旦被创建,便存在于服务器的整个生命周期;
已连接描述符:客户端与服务器端已经建立起来连接的一个端点,服务器每次接受连接请求时都会创建一次,仅存在于服务器为某个客户端的服务过程中