5 sockets linux networking file-descriptor reusability
在下面的服务器代码中调用套接字后,我收到错误“打开文件过多”。此代码被重复调用,并且仅在 server_SD 获取值 1022 之后发生。因此我假设我达到了“ulimit -n”所禁止的 1024 限制。我不明白的是我正在关闭套接字,这应该使 fd 可重用,但这似乎没有发生。
注意:使用linux,是的,客户端也被关闭,不,我不是root用户,所以移动限制不是一个选项,我应该一次最多打开20个(左右)套接字。在我的程序的生命周期中,我期望打开和关闭接近 1000000 个套接字(因此需要非常强大的重用)。
server_SD = socket (AF_INET, SOCK_STREAM, 0);
bind (server_SD, (struct sockaddr *) &server_address, server_len)
listen (server_SD,1)
client_SD = accept (server_SD, (struct sockaddr *)&client_address, &client_len)
// read, write etc...
shutdown (server_SD, 2);
close (server_SD)
Run Code Online (Sandbox Code Playgroud)
有谁知道如何保证关闭和可重用性?
谢谢。