我正在讨论如何将User结构映射到它们的套接字文件描述符。我正在考虑保留一个MAX_CONNECTIONS大小的void指针数组,并将指针存储为文件描述符的键值。
我遇到的问题是我计划如何处理我的收据。我目前致电pipe()
来制作管道,然后fork()
处理recv
的流程。我也可能想要跟踪这些,以便能够处理。
我目前所做的是遍历链接的用户列表,找到与描述符匹配的用户,并从那里开始
问题:这是将套接字映射到与其连接的用户的有效和/或可接受的方法,还是应该练习其他类型的巫术?
我感谢任何对我(可能毫无意义的)困境的努力。
答案 0 :(得分:3)
如果你没有很多客户,那就没关系。你不会花很多时间在一堆用户身上。您可能想尝试使用哈希表(或字典,关联数组)。
ANSI-C中有无数的免费/开放实现,或者你可以自己动手。您只需要为每个用户提供一些唯一且常量的标识符,这将成为您的关键。如果你想拥有双向关系(双射映射),你可以拥有另一个散列表,用文件描述符存储用户。
哈希表的操作是O(1)平均值。哈希表本身使用O(N)空间,其中N是一个大数字(但不是太大)。也不用担心。
看看this one。您可能也对this question感兴趣。