原文:https://beej.us/guide/bgnet/html/#listen
5.5 listen() --- 如果有“人”,请叫我?
是该换换内容的时候了。
假如不仅仅希望与远程的一个地址相连,或者说, 希望与多个地址相连。怎么办?
分两步:首先,监听--listen(),然后,你接受--accept()
函数原型:
int listen(int sockfd, int backlog);
- sockfd
是调用socket() 返回的套接字文件描述符。
- backlog
是在进入队列中允许的连接数目。
什么意思呢?
进入的连接是在队列中一直等待直到你接受 (accept())连接。
它们的数目限制于队列的允许。
大多数系统的允许数目是20,你也可以设置为5到10。
和别的函数一样,在发生错误的时候返回-1,并设置全局错误变量 errno。
如果你想侦听进入的连接,那么调用的顺序:
getaddrinfo();
socket();
bind();
listen();
/* accept() goes here */
真正麻烦的部分在 accept()。