我正在编写挂钩WSARecv / recv和其他网络功能的dll,我需要将一些数据与用户连接(SOCKET)一起使用,并在WSARecv / recv / WSASend / send钩子中使用它。 我想知道,最好的和最快的(在性能方面)方法是什么?
我现在正在做的事情非常简单:我有一个SOCKETS数组(如fd_set),第二个数组具有相同的索引(也就是fd),我用我的信息存储结构。< / p>
这个方法的问题很明显 - 每次我必须挂接传入或传出数据包时,我必须遍历我的fd_array并通过SOCKET找到fd(索引),然后使用它来访问第二个数组中的数据。当我的服务器有超过1000个连接时,这会产生麻烦(每次服务器发送或接收数据包时,我必须遍历一个包含1000个元素的数组来查找fd。)
有没有更好更快的方法呢?
答案 0 :(得分:0)
要修改套接字调用,建议不要挂钩API调用。您可以使用winsockLSP或WFP方法来过滤网络操作。这两种机制都提供了在每个网络连接上存储附加信息的框架。