锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲av日韩av综合,亚洲日本在线播放,亚洲av日韩av永久无码电影 http://m.tkk7.com/stone2083/category/54540.htmlzh-cnMon, 22 Sep 2014 09:52:44 GMTMon, 22 Sep 2014 09:52:44 GMT60SCP闄愰熼昏緫瀹炵幇--甯︿腑鏂囨敞閲婄殑bandwidth_limit鍑芥暟http://m.tkk7.com/stone2083/archive/2014/09/22/418166.htmlstone2083stone2083Mon, 22 Sep 2014 09:45:00 GMThttp://m.tkk7.com/stone2083/archive/2014/09/22/418166.htmlhttp://m.tkk7.com/stone2083/comments/418166.htmlhttp://m.tkk7.com/stone2083/archive/2014/09/22/418166.html#Feedback0http://m.tkk7.com/stone2083/comments/commentRss/418166.htmlhttp://m.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 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 在线永久看片免费的视频| 亚洲AV无码一区东京热| 亚洲一区二区三区免费视频| 成人女人A级毛片免费软件| 特级aa**毛片免费观看| 亚洲精品二三区伊人久久| 在线观看免费污视频| 亚洲GV天堂无码男同在线观看| 婷婷亚洲综合五月天小说| 亚洲综合国产精品第一页| 日本特黄a级高清免费大片| 手机在线看永久av片免费| 久久精品电影免费动漫| 亚洲国产高清美女在线观看| 国产精品亚洲а∨无码播放| 免费人妻无码不卡中文字幕系 | 污视频在线观看免费| 国产精品免费久久久久久久久| 亚洲AV成人无码久久精品老人| 亚洲第一区精品观看| 99re视频精品全部免费| 99热在线日韩精品免费| 亚洲欧洲日韩国产综合在线二区| 久久久久一级精品亚洲国产成人综合AV区| 免费国产成人18在线观看| 亚洲Av高清一区二区三区| 18gay台湾男同亚洲男同| 亚洲欧洲第一a在线观看| 国产成人亚洲综合无码精品| 国产免费的野战视频| 亚洲网站免费观看| 免费大片黄在线观看| 亚洲黄网在线观看| 久久亚洲AV成人无码| 内射干少妇亚洲69XXX| 亚洲电影一区二区| 久久久久亚洲AV无码麻豆| 综合自拍亚洲综合图不卡区| 亚洲第一二三四区| 亚洲AV无码一区二区三区人| 亚洲av极品无码专区在线观看|