锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲av无码片vr一区二区三区,相泽南亚洲一区二区在线播放,男人的天堂亚洲一区二区三区 http://www.tkk7.com/stone2083/category/54540.htmlzh-cnMon, 22 Sep 2014 09:52:44 GMTMon, 22 Sep 2014 09:52:44 GMT60SCP闄愰熼昏緫瀹炵幇--甯︿腑鏂囨敞閲婄殑bandwidth_limit鍑芥暟http://www.tkk7.com/stone2083/archive/2014/09/22/418166.htmlstone2083stone2083Mon, 22 Sep 2014 09:45:00 GMThttp://www.tkk7.com/stone2083/archive/2014/09/22/418166.htmlhttp://www.tkk7.com/stone2083/comments/418166.htmlhttp://www.tkk7.com/stone2083/archive/2014/09/22/418166.html#Feedback0http://www.tkk7.com/stone2083/comments/commentRss/418166.htmlhttp://www.tkk7.com/stone2083/services/trackbacks/418166.htmlSCP闄愰熼昏緫瀹炵幇--甯︿腑鏂囨敞閲婄殑bandwidth_limit鍑芥暟
SCP鏀寔闄愰? 閫氳繃-l鍙傛暟, 鎸囧畾鎷瘋礉鐨勯熷害
 -l limit
             Limits the used bandwidth, specified in Kbit/s.

鍏蜂綋瀹炵幇, 鏄湪misc.c涓殑bandwidth_limit鍑芥暟
涓嬮潰闄勪笂甯︿腑鏂囨敞閲婄殑bandwidth_limit鍑芥暟浠g爜
 1 struct bwlimit {
 2     size_t buflen;                 // 姣忔read鐨刡uf闀垮害
 3     u_int64_t rate, thresh, lamt;  // rate:  闄愰熼熺巼, 鍗曚綅kpbs
 4                                    // thresh:緇熻鍛ㄦ湡,read闀垮害鍒頒簡鎸囧畾闃堝? 瑙﹀彂闄愰熺粺璁?br /> 5                                    // lamt:  涓嬈$粺璁″懆鏈熷唴, read浜嗗灝戦暱搴?/span>
 6     struct timeval bwstart, bwend; // bwstart: 緇熻鍛ㄦ湡涔嬪紑濮嬫椂闂?br /> 7                                    // bwend:   緇熻鍛ㄦ湡涔嬬粨鏉熸椂闂?/span>
 8 };
 9 
10 void bandwidth_limit_init(struct bwlimit *bw, u_int64_t kbps, size_t buflen)
11 {
12     bw->buflen = buflen;          // 鍒濆鍖杛ead buf闀垮害
13     bw->rate = kbps;              // 鍒濆鍖栭檺閫熼熺巼
14     bw->thresh = bw->rate;        // 鍒濆鍖栫粺璁″懆鏈?/span>
15     bw->lamt = 0;                 // 鍒濆鍖栧綋鍓峳ead闀垮害
16     timerclear(&bw->bwstart);     // 鍒濆鍖栫粺璁″紑濮嬫椂闂?/span>
17     timerclear(&bw->bwend);       // 鍒濆鍖栫粺璁$粨鏉熸椂闂?/span>
18 }
19 
20 void bandwidth_limit(struct bwlimit *bw, size_t read_len)
21 {
22     u_int64_t waitlen;
23     struct timespec ts, rm;
24 
25     // 璁劇疆緇熻寮濮嬫椂闂? 涓哄綋鍓嶆椂闂?/span>
26     if (!timerisset(&bw->bwstart)) {
27         gettimeofday(&bw->bwstart, NULL);
28         return;
29     }
30 
31     // 璁劇疆褰撳墠read闀垮害
32     bw->lamt += read_len;
33     // 鍒ゆ柇褰撳墠read闀垮害鏄惁鍒拌揪緇熻鍛ㄦ湡鐨勯槇鍊?/span>
34     if (bw->lamt < bw->thresh)
35         return;
36 
37     // 璁劇疆緇熻緇撴潫鏃墮棿,涓哄綋鍓嶆椂闂?/span>
38     gettimeofday(&bw->bwend, NULL);
39     // bwend鍙橀噺澶嶇敤, 榪欎釜鏃跺? bwend鍚箟涓? 鏈緇熻鍛ㄦ湡瀹為檯寮閿鐨勬椂闂? 鏃ead thresh闀垮害瀛楄妭,鑺變簡澶氬皯鏃墮棿.
40     timersub(&bw->bwend, &bw->bwstart, &bw->bwend);
41     if (!timerisset(&bw->bwend))
42         return;
43 
44     // 灝嗗崟浣嶄粠Byte鍙樻垚bit
45     bw->lamt *= 8;
46     // 鏍規嵁闄愰熼熺巼, 璁$畻鐞嗚搴旇鑺辮垂澶氬皯鏃墮棿
47     waitlen = (double)1000000L * bw->lamt / bw->rate;
48     // bwstart鍙橀噺澶嶇敤, 榪欎釜鏃跺? bwstart鍚箟涓? 鏈緇熻鍛ㄦ湡鐞嗚寮閿鐨勬椂闂?/span>
49     bw->bwstart.tv_sec = waitlen / 1000000L;
50     bw->bwstart.tv_usec = waitlen % 1000000L;
51 
52     // 濡傛灉鐞嗚寮閿鏃墮棿 >  瀹為檯寮閿鏃墮棿, 鍒欓渶瑕佸仛闄愰?/span>
53     if (timercmp(&bw->bwstart, &bw->bwend, >)) {
54         // bwend鍙橀噺澶嶇敤, 榪欎釜鏃墮棿, bwend鍚箟涓? 鐞嗚寮閿鏃墮棿 鍜?nbsp;瀹為檯寮閿鏃墮棿鐨勫樊鍊? 鏃㈤渶瑕乻leep鐨勬椂闂? 紜繚杈懼埌闄愰熷埌鎸囧畾鐨剅ate鍊?/span>
55         timersub(&bw->bwstart, &bw->bwend, &bw->bwend);
56 
57         // 濡傛灉宸艱揪鍒頒簡縐掔駭, 鍒欓渶瑕侀檷浣庣粺璁″懆鏈熼槇鍊? 紜繚緇熻鐩稿綺劇‘
58         // thresh鍙樹負鍘熷厛鐨?/2, 浣嗕笉鑳戒綆浜巄uflen鐨?/4
59         if (bw->bwend.tv_sec) {
60             bw->thresh /= 2;
61             if (bw->thresh < bw->buflen / 4)
62                 bw->thresh = bw->buflen / 4;
63         } 
64         // 濡傛灉宸煎皬浜?0姣, 鍒欓渶瑕佸姞澶х粺璁″懆鏈熼槇鍊? 紜繚緇熻鐩稿綺劇‘
65         // thresh鍙樹負鍘熷厛鐨?鍊? 浣嗕笉鑳介珮浜巄uflen鐨?鍊?/span>
66         else if (bw->bwend.tv_usec < 10000) {
67             bw->thresh *= 2;
68             if (bw->thresh > bw->buflen * 8)
69                 bw->thresh = bw->buflen * 8;
70         }
71 
72         // 涔栦箹鐨勭潯涓浼氬惂, 浠ヨ揪鍒伴檺閫熺洰鐨?/span>
73         TIMEVAL_TO_TIMESPEC(&bw->bwend, &ts);
74         while (nanosleep(&ts, &rm) == -1) {
75             if (errno != EINTR)
76                 break;
77             ts = rm;
78         }
79     }
80 
81     // 鏂扮殑緇熻鍛ㄦ湡寮濮? 鍒濆鍖杔amt, bwstart鍙橀噺
82     bw->lamt = 0;
83     gettimeofday(&bw->bwstart, NULL);
84 }


stone2083 2014-09-22 17:45 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 成人网站免费观看| 亚洲精品无码久久久久秋霞| fc2免费人成为视频| 免费国产a国产片高清网站| 在线亚洲午夜片AV大片| 我想看一级毛片免费的| 亚洲色偷偷色噜噜狠狠99网| 全免费一级午夜毛片| 男男gay做爽爽免费视频| 性做久久久久免费看| 瑟瑟网站免费网站入口| 国产亚洲情侣一区二区无码AV| av片在线观看永久免费| 亚洲国产AV无码专区亚洲AV| 午夜不卡久久精品无码免费| 亚洲xxxxxx| 性做久久久久免费观看| japanese色国产在线看免费| 亚洲欧洲日韩国产综合在线二区| 人与禽交免费网站视频| 香蕉大伊亚洲人在线观看| 可以免费观看一级毛片黄a| 男人天堂免费视频| 亚洲欧洲另类春色校园小说| 成人毛片免费在线观看| 一级一级一级毛片免费毛片| 亚洲人成网址在线观看| 国内自产拍自a免费毛片| 91成人免费观看在线观看| 久久久久亚洲av无码专区| 性感美女视频免费网站午夜| 一级做a爰片久久毛片免费陪 | 亚洲国产一区在线观看| 暖暖免费高清日本中文| aa级毛片毛片免费观看久| 亚洲国产精品无码久久久| 五月婷婷亚洲综合| 69精品免费视频| 黄色毛片免费网站| 亚洲春黄在线观看| 中文字幕亚洲一区二区va在线|