indy UDP的幾個測試

2021-04-14 02:12:25 字數 1724 閱讀 7455

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向目標主機 位址 傳送乙個回送請求資料報,要求目標主機收到請求後給予答覆,從而判斷網路的響應時間和本機是否...