在下面的服务器代码中调用socket后,我遇到了“打开文件过多”的错误。这段代码会反复调用,并且仅在server_SD获取值1022后才会出现此错误。因此,我认为我已经达到了由“ulimit -n”规定的1024的限制。但我不明白的是,我关闭了Socket,这应使fd可重用,但似乎并没有发生这种情况。
注意:使用Linux,并且客户端也已关闭。否则,我不是root用户,因此无法移动限制。我一次应最多打开约20个套接字。在程序的整个生命周期中,我希望打开和关闭近1000000个套接字(因此需要非常强大的重用)。
注意:使用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)
有人知道如何保证闭合性和可重用性吗?
谢谢。