AcceptEx without WSAIoctl

问题描述:

使用AcceptEx直接调用或使用WSAIoctl获取的函数指针之间是否有区别。AcceptEx without WSAIoctl

MSDN并未完全涵盖此性能问题以及使用AcceptEx作为直接调用时可能面临的其他问题。

而其他问题是: 如果我有我的程序中有4个监听套接字,我是否需要为每个监听套接字调用WSAIoctl,当然每个套接字都存储函数指针?或者对于任何套接字调用一次就足够了,而不是与其他套接字一起使用。

提前致谢。

WSAIoctl。它是一个扩展提供程序,用于新功能/ winsock功能的添加,每个新的Windows版本通常会添加一些新的扩展。

AcceptEx函数指针: 使用AcceptEx直接将应用程序绑定到需要MSWsock.dll的Microsoft提供程序。至于正确性,你可能应该使用msdn的方式,并通过扩展使用函数。

只需设置一次,即可使用,你将不得不与MSWsock-的AcceptEx(你仍然会采用同样的事情)

至于速度/性能,我建议集中在插座的池来代替。

编辑: 应该澄清(msdn)分离的原因 - 扩展是微软特定的功能,其他提供者不应强制执行。

调用不预先获得一个函数指针 功能(即,通过用mswsock.lib链接和直接调用AcceptEx) 是昂贵的,因为坐落的AcceptEx 的Winsock2的分层体系结构的外部。 AcceptEx必须使用WSAIoctl为每个呼叫请求一个函数指针,以避免应用程序实际尝试 从mswsock顶层的提供程序调用AcceptEx(请参阅图3)。为避免在每次调用中出现这种显着的性能损失, 打算使用这些API的应用程序应通过调用WSAIoctl直接从分层提供程序获得 指向这些函数的指针,其中 。

http://msdn.microsoft.com/en-us/magazine/cc302334.aspx