gpt4 book ai didi

c++ - 在 Windows 中将数据与 SOCKET 相关联以用于 recv/WSARecv Hook 的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:30 27 4
gpt4 key购买 nike

我正在编写 Hook WSARecv/recv 和其他网络功能的 dll,我需要将一些数据与用户连接 (SOCKET) 相关联,并在 WSARecv/recv/WSASend/send Hook 中使用它。我想知道,最好和最快(就性能而言)的方法是什么?

我现在这样做的方式非常简单:我有一个 SOCKETS 数组(如 fd_set ),第二个数组具有相同的索引(又名 fd),我在其中存储结构和我的信息。

这种方法的问题很明显——每次我必须挂接传入或传出数据包时,我必须遍历我的 fd_array 并通过 SOCKET 找到 fd(索引),然后使用它来访问第二个数组中的数据。当我的服务器有超过 1000 个连接时,这会造成麻烦(每次服务器发送或接收数据包时,我必须遍历一个包含 1000 个元素的数组来查找 fd)。

有没有更好更快的方法来做到这一点?

最佳答案

要改变套接字调用, Hook API 调用不是推荐的方法。您可以使用 winsockLSP 或 WFP 方法来过滤网络操作。这两种机制都提供了在每个网络连接上存储附加信息的框架。

关于c++ - 在 Windows 中将数据与 SOCKET 相关联以用于 recv/WSARecv Hook 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25272300/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com