indy UDP的幾個測試

來源:互聯網
上載者:User

1、當Server來不及處理時,能緩衝多大資料?

[Server]
procedure TFormServer.UDPServer_MainUDPRead(Sender: TObject;
  AData: TStream; ABinding: TIdSocketHandle);
begin
  ShowMessage('Hold');
end;

[Client]
procedure TForm2.Button1Click(Sender: TObject);
var
  MS:TMemoryStream;
begin
  MS:=TMemoryStream.Create;
  try
    IdUDPClient1.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);
var
  vBuffer: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的時候,伺服器還是能緩衝一次。

 

===================================

緩衝的調整方法:

系統資源(IRQ)分配給網卡一定的記憶體,通過修改增大網卡使用記憶體值,讓網卡上下載工作時不停頓,從而達到提高網速的目的。

      一、開始=>運行=>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是在記憶體中分配的空間。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.