商城网站免费模板,在火炉做网站公园坐什么车,seo做网站,建立的英语1、listen()函数介绍
listen函数使用主动连接套接口变为被连接套接口#xff0c;使得一个进程可以接受其它进程的请求#xff0c;从而成为一个服务器进程。在TCP服务器编程中listen函数把进程变为一个服务器#xff0c;并指定相应的套接字变为被动连接。 listen函数在一般在…1、listen()函数介绍
listen函数使用主动连接套接口变为被连接套接口使得一个进程可以接受其它进程的请求从而成为一个服务器进程。在TCP服务器编程中listen函数把进程变为一个服务器并指定相应的套接字变为被动连接。 listen函数在一般在调用bind之后-调用accept之前调用它的函数原型是
#includesys/socket.h
int listen(int sockfd, int backlog) 返回0──成功 -1──失败 2、参数sockfd
被listen函数作用的套接字sockfd之前由socket函数返回。在被socket函数返回的套接字fd之时它是一个主动连接的套接字也就是此时系统假设用户会对这个套接字调用connect函数期待它主动与其它进程连接然后在服务器编程中用户希望这个套接字可以接受外来的连接请求也就是被动等待用户来连接。由于系统默认时认为一个套接字是主动连接的所以需要通过某种方式来告诉系统用户进程通过系统调用listen来完成这件事。 参数backlog 这个参数涉及到一些网络的细节。在进程正理一个一个连接请求的时候可能还存在其它的连接请求。因为TCP连接是一个过程所以可能存在一种半连接的状态有时由于同时尝试连接的用户过多使得服务器进程无法快速地完成连接请求。如果这个情况出现了服务器进程希望内核如何处理呢内核会在自己的进程空间里维护一个队列以跟踪这些完成的连接但服务器进程还没有接手处理或正在进行的连接这样的一个队列内核不可能让其任意大所以必须有一个大小的上限。这个backlog告诉内核使用这个数值作为上限。 毫无疑问服务器进程不能随便指定一个数值内核有一个许可的范围。这个范围是实现相关的。很难有某种统一一般这个值会小30以内。
当调用listen之后服务器进程就可以调用accept来接受一个外来的请求。 不要以为backlog数目就是客户端连接的最大数目切记。