1、當server來不及處理時,能快取多大資料?
[server]
procedure tformserver.udpserver_mainudpread(sender: tobject;
adata: tstream; abinding: tidsockethandle);
begin
showmessage('hold');
end;
[client]
procedure tform2.button1click(sender: tobject);
varms:tmemorystream;
begin
ms:=tmemorystream.create;
tryidudpclient1.active:=true;
ms.size:=1024;
idudpclient1.sendbuffer(ms.memory^,ms.size);
idudpclient1.active:=false;
finally
ms.free;
end;
end;
client第1次傳送後,伺服器彈出獨佔form凍住,然後client在傳送10次,每次1k,在伺服器端,一共可以看到9次彈出窗體,除去第一次,也就是說伺服器能快取8次,即8k資料。
要改變緩衝區大小,可以這樣,如下面**,把緩衝區大小改為80k:
procedure tform1.formcreate(sender: tobject);
varvbuffer:integer;
begin
idudpserver1.active:=true;
vbuffer:=1024*80;
idudpserver1.binding.setsockopt(id_sol_socket, id_so_rcvbuf, pchar(@vbuffer), sizeof(integer));
end;
在接收緩衝區滿後,ethereal仍然能抓到持續送來的包。
2、client一次能發的最大包是多少? (非mtu)
tidudpserver的buffersize指一次能接收的最大封包。預設為8k,客戶端一次傳送的資料不能比這個大,否則伺服器收不到,如果伺服器的buffersize設為80k,經過步步逼近測試,客戶端一次最大只能傳送1024*64-29,即65507,比64k少一點,再大乙個byte,都會在客戶端報錯「package size too big」。
udpserver.buffersize的大小與server的8k快取能力無關,當udpserver.buffersize設為80k時,其快取能力還是只有8k。當udpserver.buffersize設為1k時,其快取能力還是有8k。
但是奇怪的是,當client的單次傳送資料大於8k的時候,伺服器還是能快取一次。
快取的調整方法:
一、開始=>執行=>msinfo32.exe=>確定,開啟系統資訊=>硬體資源=>irq=>找到分配網絡卡的irq值(最近本人機子網絡卡的irq是17)
檢視硬體資源=>記憶體,可以看到:
0xe1000000-0xe1000fff realtek rtl8168/8111 pci-e gigabit ethernet nic ok
恰好是$1000,即8k
二、開始=>執行=>system.ini在[386enh]項下增加一行「irq 17=4096」=>儲存後重啟。(注:將第一步找到的irq值寫入.本機是17,4096是在記憶體中分配的空間。
關於測試的幾個術語
beta,這個 希臘字母的英文寫法,怎麼會變成了 測試 的含義。據我所知的,廣義上對測試有三個傳統的稱呼,alpha beta gamma,用來標識測試的階段和範圍。alpha 是指內測,即現在說的 cb,指開發團隊內部測試的版本或者有限使用者體驗測試版本。beta 是指公測,即針對所有使用者公開的...
效能測試的幾個術語
1 併發使用者數 從業務角度出發,和從服務端承受的壓力出發,併發使用者數 是兩個概念。業務使用者併發數,指的是,在乙個時間範圍內,固定數量的使用者使用該系統,每乙個使用者的業務行為都有可能不一樣。伺服器端併發使用者數,指的是,多個使用者同時通過客戶端同乙個功能向服務端發起請求 具體指的哪乙個概念,要...
幾個網路測試命令
了解和掌握下面幾個命令將會有助於您更快地檢測到網路故障所在,從而節省時間,提高效率。ping ping是測試網路聯接狀況以及資訊包傳送和接收狀況非常有用的工具,是網路測試最 常用的命令。ping向目標主機 位址 傳送乙個回送請求資料報,要求目標主機收到請求後給予答覆,從而判斷網路的響應時間和本機是否...