當您執行的程式，使用 Windows 通訊端 API 時，您可能會遇到效能變慢，當您將資料複製到 TCP 伺服器。
Windows 通訊端程式會使用非封鎖通訊端。
傳送單一呼叫或WSASend呼叫填滿整個基礎的通訊端傳送緩衝區。
在這個案例中，每次為 64 KB 的資料，傳送的呼叫程式問題程式傳回的SOCKET_ERROR錯誤碼如果基礎 32 KB 通訊端緩衝區已完全填入。它會呼叫WSAGetLastError函式之後，程式就會收到WSAEWOULDBLOCK錯誤程式碼。大部分的程式會使用 Windows 通訊端選取函式來檢查通訊端的狀態。在這個案例中，選取函式不會報告為可寫入通訊端直到用戶端收到的未完成的 TCP ACK 區段。根據預設，在 Windows 環境中，這可能會花 200 毫秒因為延遲的認可演算法。
用戶端會傳送推入設定的位元的最後一次的 TCP 區段之前，遠端的 TCP 伺服器就會認可所有 TCP 區段。
要解決這個問題，請使用下列方法之一。
非封鎖通訊端才會發生這個問題。當您使用封鎖的通訊端時，不會不會發生這個問題，因為 Afd.sys 以不同方式處理通訊端緩衝區。如需有關發生封鎖及非封鎖通訊端程式設計的詳細資訊，請參閱 Microsoft 平台 SDK 文件。
若要修改的通訊端傳送的緩衝區，使用 [Windows 通訊端的getsockopt函式來判斷目前的通訊端傳送的緩衝區大小 (SO_SNDBUF)，然後使用setsockopt函式，若要設定通訊端傳送緩衝區大小。當您完成時，SO_SNDBUF 值必須是至少 1 個位元組大於程式傳送的緩衝區大小。
您也可以使用這些值的任何組合。
修改以立即接受連入 TCP 區段的 [TCP 伺服器上的 TCP/IP 設定。這項替代解決方案最適合在環境中具有基底的大型用戶端安裝，您無法在此變更程式的行為。遠端的 TCP 伺服器會以 Windows 為基礎的伺服器上執行的情況下，您必須修改登錄的遠端伺服器。其他的作業系統，請參閱作業系統的文件，如需有關如何變更延遲的認可計時器的資訊。
重新啟動 Windows，此變更才會生效。
命名新的值TcpAckFrequency，並將它指派值為 1。
注意 這個登錄機碼只適用於 Windows Server 2003，Service Pack 1 與後續的 service pack。
按一下 [開始]，鍵入regedit.exe，，然後按一下[確定]。
命名新的值NonBlockingSendSpecialBuffering，並將它指派值為 1。