2010-12-17 58 views
2

使用AcceptEx直接調用或使用WSAIoctl獲取的函數指針之間是否有區別。AcceptEx without WSAIoctl

MSDN並未完全涵蓋此性能問題以及使用AcceptEx作爲直接調用時可能面臨的其他問題。

而其他問題是: 如果我有我的程序中有4個監聽套接字,我是否需要爲每個監聽套接字調用WSAIoctl,當然每個套接字都存儲函數指針?或者對於任何套接字調用一次就足夠了,而不是與其他套接字一起使用。

提前致謝。

回答

3

WSAIoctl。它是一個擴展提供程序,用於新功能/ winsock功能的添加,每個新的Windows版本通常會添加一些新的擴展。

AcceptEx函數指針: 使用AcceptEx直接將應用程序綁定到需要MSWsock.dll的Microsoft提供程序。至於正確性,你可能應該使用msdn的方式,並通過擴展使用函數。

只需設置一次,即可使用,你將不得不與MSWsock-的AcceptEx(你仍然會採用同樣的事情)

至於速度/性能,我建議集中在插座的池來代替。

編輯: 應該澄清(msdn)分離的原因 - 擴展是微軟特定的功能,其他提供者不應強制執行。

4

調用不預先獲得一個函數指針 功能(即,通過用mswsock.lib鏈接和直接調用AcceptEx) 是昂貴的,因爲坐落的AcceptEx 的Winsock2的分層體系結構的外部。 AcceptEx必須使用WSAIoctl爲每個呼叫請求一個函數指針,以避免應用程序實際嘗試 從mswsock頂層的提供程序調用AcceptEx(請參閱圖3)。爲避免在每次調用中出現這種顯着的性能損失, 打算使用這些API的應用程序應通過調用WSAIoctl直接從分層提供程序獲得 指向這些函數的指針,其中 。

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