c - 为什么在 1024 个连接后我的连接被拒绝?

标签 c linux sockets

我正在本地 Linux 服务器上进行测试,服务器和客户端都在同一台服务器上。在大约 1024 个连接之后,在我的代码中,我连接的地方被拒绝连接。起初我认为这是 select 的 fd_set_max 限制为 1024,并将服务器更改为轮询而不是 select,但我仍然没有超过这个数字。我的 ulimit -n 设置为 2048,我监视服务器上的 lsof 它达到大约 1033(不确定这是否是确切数字)并失败。非常感谢任何帮助。

最佳答案

如果您的连接速度比您的服务器调用 accept() 的速度快,则等待连接的队列可能已满。最大队列长度由服务器中 listen() 的第二个参数设置,或者 sysctl net.core.somaxconn 的值(通常为 128)如果较低。

关于c - 为什么在 1024 个连接后我的连接被拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/923990/

相关文章:

java - TCP 客户端/服务器属于一类

sockets - systemd:如何识别应用程序中的套接字激活?

c++ - 嵌入式文件作为 char 数组的编译器问题

c - 我希望我手动输入的字符串显示重复字符 "ma"的数量,但我被卡住了,我是 C 新手

c - 如何在微处理器/ Controller 上制作卷轴?

Python time.time() -> IOError

c - pthreads - pthread_cond_wait 上的死锁

c - 如何在不丢失任何信息的情况下将十六进制的 unsigned int[16] 转换为 unsigned char 数组?

python - linux下如何交叉编译windows的python解释器

java - 聊天应用程序——哪种技术更适合在 Android 中实现聊天应用程序