首页 文章

Linux套接字文件描述符通常适用于散列

提问于
浏览
2

我正在编写一个Linux多用户服务器,并且每个接受的连接都返回一个包含该连接的套接字文件描述符的 int . 我还有一个对应于每个连接的 UserConnection 对象 . 我使用哈希表(C STL unordered_map<int, UserConnection> )来存储套接字文件描述符(键)和 UserConnection 对象(值)的键值对 .

将套接字文件描述符作为密钥放在哈希表中是否安全? Linux的套接字号分配中是否有任何模式可能无法与散列函数一起使用?

1 回答

  • 3

    manual page for open(2)明确指出最低的未使用文件描述符被分配给新文件描述符:

    成功调用返回的文件描述符将是当前未为进程打开的编号最小的文件描述符 .

    socket(2) 似乎缺少类似的措辞,但我认为这是一个相当安全的假设 - 同样适用于套接字 .

    接下来,创建套接字将导致单个增加的文件描述符,对于新的套接字,将在第一次机会时重用 . 因此,这是散列的理想用例 .

相关问题