TClientSocket&TServerSocket传输文件时,缓冲怎么设定才最快? |
尚未結案
|
jackalan
初階會員 發表:20 回覆:88 積分:36 註冊:2003-11-08 發送簡訊給我 |
在用TClientSocket&TServerSocket传输文件时,每次发送的包大小应该怎么设定才能达到最快?也就是下面的:
try GetMem(SouFileBuf,BufSize); if (opFile.Position BufSize 1) < opFile.Size then begin opFile.Read(SouFileBuf^,BufSize); Socket.SendBuf(SouFileBuf^,BufSize); IsSendEnd := False; end else begin LastBufSize := opFile.Size-opFile.Position; opFile.Read(SouFileBuf^,LastBufSize); Socket.SendBuf(SouFileBuf^,LastBufSize); opFile.Free; IsSendEnd := True; end;//最后一次发送,发送剩余的数据 finally FreeMem(SouFileBuf,BufSize 1); end;BufSize应该怎么设定,我测试了一下,在本机 BufSize设定在4192或者更大时传输速度很快。 但如果在局域网上BufSize就相反了,并不是我认为的越大 越好,这是BufSize设定在2048就是2K时速度最快,设 定多了会出现异常。 但如果在广域网上INTERNET上,BufSize设定在1024左 右最快,设定多了会出现异常。 请问这个BufSize是不是有什么最佳的算法,让它能够处于 传输的饱和状态,不然在不知道传输的途径或者网络情况下很男让其工 作在最佳状态。 ======================= 无情剑客多情剑 |
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |