锘??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 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲伊人久久大香线蕉结合| 亚洲aⅴ无码专区在线观看春色| 国产亚洲美女精品久久久| 一个人免费观看www视频| 亚洲国产成人精品无码区二本| 污视频在线观看免费| 久久成人18免费网站| 亚洲精品国产高清不卡在线| 激情婷婷成人亚洲综合| 亚洲乱码一区av春药高潮| 久久亚洲国产精品| 日本免费一区二区在线观看| 亚洲国产理论片在线播放| 国产成人免费高清激情明星| 亚洲精品日韩专区silk| 亚洲经典在线中文字幕| 最新国产精品亚洲| 精品久久久久久亚洲综合网| 日韩色视频一区二区三区亚洲| 日韩亚洲精品福利| 亚洲人成色7777在线观看不卡 | 亚洲男人的天堂在线| 亚洲精品国产精品国自产网站| 四虎影视免费永久在线观看| 少妇亚洲免费精品| 成人精品一区二区三区不卡免费看| 亚洲日韩图片专区第1页| 亚洲精品伊人久久久久| 国产成人1024精品免费| 久久A级毛片免费观看| 亚洲av无码一区二区三区四区| 亚洲视频在线免费| 亚洲伊人久久大香线蕉影院| 黄色毛片免费网站| 久草视频免费在线| 成全视频免费观看在线看| 亚洲中文无码永久免费| 国产亚洲一区二区手机在线观看| 99re6在线视频精品免费| 57PAO成人国产永久免费视频 | 无码人妻久久一区二区三区免费 |