我正在寫一個ftp客戶端來上傳文件。僞代碼是類似於下面的東西vC++ - Ftp客戶端代碼 - 上傳文件很慢
{
command_Socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
login...//
pass.. // passive mode
get the address from the reply ... //
data_Socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
connect the data_Socket to that address ..//
open the file using createFile(....) //
loop
{
char buf[1000];
readFile and fill the buf //
send(dataSocket,buf,..);
}
}
現在,問題是上傳速度是20 kB/s,即使我在同一臺機器上傳文件。但是當一個人使用ftp上傳一個文件時,通過lan(他的機器是ubuntu),上傳速度爲10MB/s。我無法理解這背後的邏輯。
注意:我使用FileZilla FTP服務器,它能夠顯示客戶端文件的上傳/到達速度。
你是否認爲ReadFile正在減慢這個過程?至於我所關心的,系統調用是最快的函數調用。 – prabhakaran 2011-03-31 06:54:28
實際上不是'ReadFile',而是您使用它的方式:不讀取666或1231字節。它真的很慢。讀取2^k字節。而對於大文件來說,通過大小爲1024字節的塊讀取1GB需要1 048 576次迭代。你應該增加緩衝區的大小。 – maverik 2011-03-31 07:12:06