2013-09-24 100 views
6

我無法更改的應用程序正在丟棄某些傳入的UDP數據包。我懷疑接收緩衝區溢出。是否有註冊表設置使默認緩衝區大於8KB?更改Windows下的默認套接字緩衝區大小

+0

在這個[問題]看看(http://stackoverflow.com/questions/1098897/what - 是最大的安全udp數據包大小的互聯網),也[這一個](http://stackoverflow.com/questions/900697/how-to-find-the-largest- udp-packet-i-can-send-without-fragmenting) –

+0

@ja_mesa我的udp數據包是基於IP的TS,總是7 * 188 = 1316字節。我不關心碎片。 –

+0

使接收緩衝區變大隻會將問題稍微移動一點。放慢發送者速度或加速接收器。而且你無法消除UDP中的數據包丟失。 – EJP

回答

2

this 要設置Windows的默認大小使用以下DWORD註冊表項:

[HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet\Services\Afd\Parameters] 

DefaultReceiveWindow = 10240 
DefaultSendWindow = 10240 
+0

我是否需要在[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Afd \ Parameters]下創建DefaultReceiveWindow&DefaultSendWindow?由於這些在我的註冊表中不可用。 – Tariq

+0

您可以嘗試一下,更改後需要重新啓動系統。 – zangw

+0

謝謝。我添加了這些值並重新啓動了我的系統。將這兩個值設置爲16384.我在使用FFMPEG解碼RTSP流期間尋找丟失RTP數據包的解決方案時到達此線程。在解碼過程中,我仍然看到來自RTSP流的RTP數據包丟失。 – Tariq