Skip to content

LFsWang/TCP-Jinkela

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Jinkela FTP Proxy

這是利用C++11之後的系統最高精準度clock做出來的速率限制FTP Proxy,用make編譯後就可以使用了,由於make是用c++14來進行編譯的,所以如果不能編譯的話請將g++更新到最新版本。

原本在demo時我們只有過魔王測資,也就是25Kbps上傳的那個,其他的上傳限速都是錯的,但是在ubuntu上都是對的,後來發現是OS的問題,我們用了一個函數會在不同的電腦下有不同的結果,於是我們將其進行一些修改,最後終於完成現在這個版本。

參數說明

輸入格式為: <Proxy IP> <Proxy Port> <下載速率> <上傳速率>

上傳與下載速率的單位都是Kbps,且必須為int範圍整數

範例

  • ./a.out 127.0.0.1 8888 25 25

特殊函數

我們使用setsockopt這個函數來控制輸入緩出區(SO_RCVBUF)的大小,但是在ubuntu下SO_RCVBUF最小會是2304 byte,不能再小了,一開始我們設定他是8 byte。但是助教demo時用的是mac,mac貌似不會去限制SO_RCVBUF的大小,所以就真的把SO_RCVBUF變成8 byte,所以我們上傳的速率變成最大只能是90,但是demo時的上傳速率為100跟500,所以就爛了。

不過不用擔心,這個版本已經調整設定SO_RCVBUF為1024,因為系統會自動把它乘二變成2048,與2304已經十分接近所以不會有問題。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published