锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鎵句簡濂藉嚑澶╀簡錛屽緢澶氳祫婧愰兘涓嬩笉鍔?br>
浠婂ぉ濂戒笉瀹規(guī)槗涓嬩簡涓涓紝浣嗘槸棣欐腐鐗堢殑錛屼笖瀹夎鍒伴夋嫨鐩樼鏃訛紝閿洏鎵鏈夐敭閮戒笉鑳戒嬌鐢紝鎵浠ヨ繕鏄棤娉曞畨瑁?br>
璋㈣阿鍚勪綅澶у摜澶у甯府蹇欙紝灝忓紵鎰熸縺涓嶅敖錛?img src ="http://m.shnenglu.com/twzheng/aggbug/109710.html" width = "1" height = "1" />
]]>
鎽樿嚜 CSDN
鎴戝湪Cernet鍋氳繃鎷ㄥ彿鎺ュ叆騫沖彴鐨勬惌寤猴紝鑰屽悗鍦?/span>Yahoo3721璐熻澆鎼滅儲寮曟搸鍓嶇騫沖彴寮鍙戯紝鍙堝湪鐚墤澶勭悊榪囧ぇ鍨嬬ぞ鍖虹尗鎵戝ぇ鏉傜儵鐨勬灦鏋勫崌綰х瓑宸ヤ綔錛屽悓鏃惰嚜宸辨帴瑙﹀拰寮鍙戣繃涓嶅皯澶т腑鍨嬬綉绔欑殑妯″潡錛屽洜姝ゅ湪澶у瀷緗戠珯搴斿楂樿礋杞藉拰騫跺彂鐨勮В鍐蟲柟妗堜笂鏈変竴浜涚Н绱拰緇忛獙錛屽彲浠ュ拰澶у涓璧鋒帰璁ㄤ竴涓嬨?/span>
鎴戝湪Cernet鍋氳繃鎷ㄥ彿鎺ュ叆騫沖彴鐨勬惌寤猴紝鑰屽悗鍦?/span>Yahoo3721璐熻澆鎼滅儲寮曟搸鍓嶇騫沖彴寮鍙戯紝鍙堝湪鐚墤澶勭悊榪囧ぇ鍨嬬ぞ鍖虹尗鎵戝ぇ鏉傜儵鐨勬灦鏋勫崌綰х瓑宸ヤ綔錛屽悓鏃惰嚜宸辨帴瑙﹀拰寮鍙戣繃涓嶅皯澶т腑鍨嬬綉绔欑殑妯″潡錛屽洜姝ゅ湪澶у瀷緗戠珯搴斿楂樿礋杞藉拰騫跺彂鐨勮В鍐蟲柟妗堜笂鏈変竴浜涚Н绱拰緇忛獙錛屽彲浠ュ拰澶у涓璧鋒帰璁ㄤ竴涓嬨?/span>
涓涓皬鍨嬬殑緗戠珯錛屾瘮濡備釜浜虹綉绔欙紝鍙互浣跨敤鏈綆鍗曠殑html闈欐侀〉闈㈠氨瀹炵幇浜嗭紝閰嶅悎涓浜涘浘鐗囪揪鍒扮編鍖栨晥鏋滐紝鎵鏈夌殑欏甸潰鍧囧瓨鏀懼湪涓涓洰褰曚笅錛岃繖鏍風殑緗戠珯瀵圭郴緇熸灦鏋勩佹ц兘鐨勮姹傞兘寰堢畝鍗曪紝闅忕潃浜掕仈緗戜笟鍔$殑涓嶆柇涓板瘜錛岀綉绔欑浉鍏崇殑鎶鏈粡榪囪繖浜涘勾鐨勫彂灞曪紝宸茬粡緇嗗垎鍒板緢緇嗙殑鏂規(guī)柟闈㈤潰錛屽挨鍏跺浜庡ぇ鍨嬬綉绔欐潵璇達紝鎵閲囩敤鐨勬妧鏈洿鏄秹鍙婇潰闈炲父騫匡紝浠庣‖浠跺埌杞歡銆佺紪紼嬭璦銆佹暟鎹簱銆?/span>WebServer銆侀槻鐏絳夊悇涓鍩熼兘鏈変簡寰堥珮鐨勮姹傦紝宸茬粡涓嶆槸鍘熸潵綆鍗曠殑html闈欐佺綉绔欐墍鑳芥瘮鎷熺殑銆?/span>
澶у瀷緗戠珯錛屾瘮濡傞棬鎴風綉绔欍傚湪闈㈠澶ч噺鐢ㄦ埛璁塊棶銆侀珮騫跺彂璇鋒眰鏂歸潰錛屽熀鏈殑瑙e喅鏂規(guī)闆嗕腑鍦ㄨ繖鏍峰嚑涓幆鑺傦細浣跨敤楂樻ц兘鐨勬湇鍔″櫒銆侀珮鎬ц兘鐨勬暟鎹簱銆侀珮鏁堢巼鐨勭紪紼嬭璦銆佽繕鏈夐珮鎬ц兘鐨?/span>Web瀹瑰櫒銆備絾鏄櫎浜嗚繖鍑犱釜鏂歸潰錛岃繕娌℃硶鏍規(guī)湰瑙e喅澶у瀷緗戠珯闈復鐨勯珮璐熻澆鍜岄珮騫跺彂闂銆?/span>
涓婇潰鎻愪緵鐨勫嚑涓В鍐蟲濊礬鍦ㄤ竴瀹氱▼搴︿笂涔熸剰鍛崇潃鏇村ぇ鐨勬姇鍏ワ紝騫朵笖榪欐牱鐨勮В鍐蟲濊礬鍏峰鐡墮錛屾病鏈夊緢濂界殑鎵╁睍鎬э紝涓嬮潰鎴戜粠浣庢垚鏈侀珮鎬ц兘鍜岄珮鎵╁紶鎬х殑瑙掑害鏉ヨ璇存垜鐨勪竴浜涚粡楠屻?/span>
1銆?/span>HTML闈欐佸寲
鍏跺疄澶у閮界煡閬擄紝鏁堢巼鏈楂樸佹秷鑰楁渶灝忕殑灝辨槸綰潤鎬佸寲鐨?/span>html欏甸潰錛屾墍浠ユ垜浠敖鍙兘浣挎垜浠殑緗戠珯涓婄殑欏甸潰閲囩敤闈欐侀〉闈㈡潵瀹炵幇錛岃繖涓渶綆鍗曠殑鏂規(guī)硶鍏跺疄涔熸槸鏈鏈夋晥鐨勬柟娉曘備絾鏄浜庡ぇ閲忓唴瀹瑰茍涓旈綣佹洿鏂扮殑緗戠珯錛屾垜浠棤娉曞叏閮ㄦ墜鍔ㄥ幓鎸ㄤ釜瀹炵幇錛屼簬鏄嚭鐜頒簡鎴戜滑甯歌鐨勪俊鎭彂甯冪郴緇?/span>CMS錛屽儚鎴戜滑甯歌闂殑鍚勪釜闂ㄦ埛绔欑偣鐨勬柊闂婚閬擄紝鐢氳嚦浠栦滑鐨勫叾浠栭閬擄紝閮芥槸閫氳繃淇℃伅鍙戝竷緋葷粺鏉ョ鐞嗗拰瀹炵幇鐨勶紝淇℃伅鍙戝竷緋葷粺鍙互瀹炵幇鏈綆鍗曠殑淇℃伅褰曞叆鑷姩鐢熸垚闈欐侀〉闈紝榪樿兘鍏峰棰戦亾綆$悊銆佹潈闄愮鐞嗐佽嚜鍔ㄦ姄鍙栫瓑鍔熻兘錛屽浜庝竴涓ぇ鍨嬬綉绔欐潵璇達紝鎷ユ湁涓濂楅珮鏁堛佸彲綆$悊鐨?/span>CMS鏄繀涓嶅彲灝戠殑銆?/span>
闄や簡闂ㄦ埛鍜屼俊鎭彂甯冪被鍨嬬殑緗戠珯錛屽浜庝氦浜掓ц姹傚緢楂樼殑紺懼尯綾誨瀷緗戠珯鏉ヨ錛屽敖鍙兘鐨勯潤鎬佸寲涔熸槸鎻愰珮鎬ц兘鐨勫繀瑕佹墜孌碉紝灝嗙ぞ鍖哄唴鐨勫笘瀛愩佹枃绔犺繘琛屽疄鏃剁殑闈欐佸寲錛屾湁鏇存柊鐨勬椂鍊欏啀閲嶆柊闈欐佸寲涔熸槸澶ч噺浣跨敤鐨勭瓥鐣ワ紝鍍?/span>Mop鐨勫ぇ鏉傜儵灝辨槸浣跨敤浜嗚繖鏍風殑絳栫暐錛岀綉鏄撶ぞ鍖虹瓑涔熸槸濡傛銆?/span>
鍚屾椂錛?/span>html闈欐佸寲涔熸槸鏌愪簺緙撳瓨絳栫暐浣跨敤鐨勬墜孌碉紝瀵逛簬緋葷粺涓綣佷嬌鐢ㄦ暟鎹簱鏌ヨ浣嗘槸鍐呭鏇存柊寰堝皬鐨勫簲鐢紝鍙互鑰冭檻浣跨敤html闈欐佸寲鏉ュ疄鐜幫紝姣斿璁哄潧涓鍧涚殑鍏敤璁劇疆淇℃伅錛岃繖浜涗俊鎭洰鍓嶇殑涓繪祦璁哄潧閮藉彲浠ヨ繘琛屽悗鍙扮鐞嗗茍涓斿瓨鍌ㄥ啀鏁版嵁搴撲腑錛岃繖浜涗俊鎭叾瀹炲ぇ閲忚鍓嶅彴紼嬪簭璋冪敤錛屼絾鏄洿鏂伴鐜囧緢灝忥紝鍙互鑰冭檻灝嗚繖閮ㄥ垎鍐呭榪涜鍚庡彴鏇存柊鐨勬椂鍊欒繘琛岄潤鎬佸寲錛岃繖鏍烽伩鍏嶄簡澶ч噺鐨勬暟鎹簱璁塊棶璇鋒眰銆?/span>
2銆佸浘鐗囨湇鍔″櫒鍒嗙
澶у鐭ラ亾錛屽浜?/span>Web鏈嶅姟鍣ㄦ潵璇達紝涓嶇鏄?/span>Apache銆?/span>IIS榪樻槸鍏朵粬瀹瑰櫒錛屽浘鐗囨槸鏈娑堣楄祫婧愮殑錛屼簬鏄垜浠湁蹇呰灝嗗浘鐗囦笌欏甸潰榪涜鍒嗙錛岃繖鏄熀鏈笂澶у瀷緗戠珯閮戒細閲囩敤鐨勭瓥鐣ワ紝浠栦滑閮芥湁鐙珛鐨勫浘鐗囨湇鍔″櫒錛岀敋鑷沖緢澶氬彴鍥劇墖鏈嶅姟鍣ㄣ傝繖鏍風殑鏋舵瀯鍙互闄嶄綆鎻愪緵欏甸潰璁塊棶璇鋒眰鐨勬湇鍔″櫒緋葷粺鍘嬪姏錛屽茍涓斿彲浠ヤ繚璇佺郴緇熶笉浼氬洜涓哄浘鐗囬棶棰樿屽穿婧冿紝鍦ㄥ簲鐢ㄦ湇鍔″櫒鍜屽浘鐗囨湇鍔″櫒涓婏紝鍙互榪涜涓嶅悓鐨勯厤緗紭鍖栵紝姣斿apache鍦ㄩ厤緗?/span>ContentType鐨勬椂鍊欏彲浠ュ敖閲忓皯鏀寔錛屽敖鍙兘灝戠殑LoadModule錛屼繚璇佹洿楂樼殑緋葷粺娑堣楀拰鎵ц鏁堢巼銆?/span>
3銆佹暟鎹簱闆嗙兢鍜屽簱琛ㄦ暎鍒?/span>
澶у瀷緗戠珯閮芥湁澶嶆潅鐨勫簲鐢紝榪欎簺搴旂敤蹇呴』浣跨敤鏁版嵁搴擄紝閭d箞鍦ㄩ潰瀵瑰ぇ閲忚闂殑鏃跺欙紝鏁版嵁搴撶殑鐡墮寰堝揩灝辮兘鏄劇幇鍑烘潵錛岃繖鏃朵竴鍙版暟鎹簱灝嗗緢蹇棤娉曟弧瓚沖簲鐢紝浜庢槸鎴戜滑闇瑕佷嬌鐢ㄦ暟鎹簱闆嗙兢鎴栬呭簱琛ㄦ暎鍒椼?/span>
鍦ㄦ暟鎹簱闆嗙兢鏂歸潰錛屽緢澶氭暟鎹簱閮芥湁鑷繁鐨勮В鍐蟲柟妗堬紝Oracle銆?/span>Sybase絳夐兘鏈夊緢濂界殑鏂規(guī)錛屽父鐢ㄧ殑MySQL鎻愪緵鐨?/span>Master/Slave涔熸槸綾諱技鐨勬柟妗堬紝鎮(zhèn)ㄤ嬌鐢ㄤ簡浠涔堟牱鐨?/span>DB錛屽氨鍙傝冪浉搴旂殑瑙e喅鏂規(guī)鏉ュ疄鏂藉嵆鍙?/span>
涓婇潰鎻愬埌鐨勬暟鎹簱闆嗙兢鐢變簬鍦ㄦ灦鏋勩佹垚鏈佹墿寮犳ф柟闈㈤兘浼氬彈鍒版墍閲囩敤DB綾誨瀷鐨勯檺鍒訛紝浜庢槸鎴戜滑闇瑕佷粠搴旂敤紼嬪簭鐨勮搴︽潵鑰冭檻鏀瑰杽緋葷粺鏋舵瀯錛屽簱琛ㄦ暎鍒楁槸甯哥敤騫朵笖鏈鏈夋晥鐨勮В鍐蟲柟妗堛傛垜浠湪搴旂敤紼嬪簭涓畨瑁呬笟鍔″拰搴旂敤鎴栬呭姛鑳芥ā鍧楀皢鏁版嵁搴撹繘琛屽垎紱伙紝涓嶅悓鐨勬ā鍧楀搴斾笉鍚岀殑鏁版嵁搴撴垨鑰呰〃錛屽啀鎸夌収涓瀹氱殑絳栫暐瀵規(guī)煇涓〉闈㈡垨鑰呭姛鑳借繘琛屾洿灝忕殑鏁版嵁搴撴暎鍒楋紝姣斿鐢ㄦ埛琛紝鎸夌収鐢ㄦ埛ID榪涜琛ㄦ暎鍒楋紝榪欐牱灝辮兘澶熶綆鎴愭湰鐨勬彁鍗囩郴緇熺殑鎬ц兘騫朵笖鏈夊緢濂界殑鎵╁睍鎬с?/span>sohu鐨勮鍧涘氨鏄噰鐢ㄤ簡榪欐牱鐨勬灦鏋勶紝灝嗚鍧涚殑鐢ㄦ埛銆佽緗佸笘瀛愮瓑淇℃伅榪涜鏁版嵁搴撳垎紱伙紝鐒跺悗瀵瑰笘瀛愩佺敤鎴鋒寜鐓ф澘鍧楀拰ID榪涜鏁e垪鏁版嵁搴撳拰琛紝鏈緇堝彲浠ュ湪閰嶇疆鏂囦歡涓繘琛岀畝鍗曠殑閰嶇疆渚胯兘璁╃郴緇熼殢鏃跺鍔犱竴鍙頒綆鎴愭湰鐨勬暟鎹簱榪涙潵琛ュ厖緋葷粺鎬ц兘銆?/span>
4銆佺紦瀛?/span>
緙撳瓨涓璇嶆悶鎶鏈殑閮芥帴瑙﹁繃錛屽緢澶氬湴鏂圭敤鍒扮紦瀛樸傜綉绔欐灦鏋勫拰緗戠珯寮鍙戜腑鐨勭紦瀛樹篃鏄潪甯擱噸瑕併傝繖閲屽厛璁茶堪鏈鍩烘湰鐨勪袱縐嶇紦瀛樸傞珮綰у拰鍒嗗竷寮忕殑緙撳瓨鍦ㄥ悗闈㈣榪般?/span>
鏋舵瀯鏂歸潰鐨勭紦瀛橈紝瀵?/span>Apache姣旇緝鐔熸?zhèn)夌殑錆h閮借兘鐭ラ亾Apache鎻愪緵浜嗚嚜宸辯殑緙撳瓨妯″潡錛屼篃鍙互浣跨敤澶栧姞鐨?/span>Squid妯″潡榪涜緙撳瓨錛岃繖涓ょ鏂瑰紡鍧囧彲浠ユ湁鏁堢殑鎻愰珮Apache鐨勮闂搷搴旇兘鍔涖?/span>
緗戠珯紼嬪簭寮鍙戞柟闈㈢殑緙撳瓨錛?/span>Linux涓婃彁渚涚殑Memory Cache鏄父鐢ㄧ殑緙撳瓨鎺ュ彛錛屽彲浠ュ湪web寮鍙戜腑浣跨敤錛屾瘮濡傜敤Java寮鍙戠殑鏃跺欏氨鍙互璋冪敤MemoryCache瀵逛竴浜涙暟鎹繘琛岀紦瀛樺拰閫氳鍏變韓錛屼竴浜涘ぇ鍨嬬ぞ鍖轟嬌鐢ㄤ簡榪欐牱鐨勬灦鏋勩傚彟澶栵紝鍦ㄤ嬌鐢?/span>web璇█寮鍙戠殑鏃跺欙紝鍚勭璇█鍩烘湰閮芥湁鑷繁鐨勭紦瀛樻ā鍧楀拰鏂規(guī)硶錛?/span>PHP鏈?/span>Pear鐨?/span>Cache妯″潡錛?/span>Java灝辨洿澶氫簡錛?/span>.net涓嶆槸寰堢啛鎮(zhèn)夛紝鐩鎬俊涔熻偗瀹氭湁銆?/span>
5銆侀暅鍍?/span>
闀滃儚鏄ぇ鍨嬬綉绔欏父閲囩敤鐨勬彁楂樻ц兘鍜屾暟鎹畨鍏ㄦх殑鏂瑰紡錛岄暅鍍忕殑鎶鏈彲浠ヨВ鍐充笉鍚岀綉緇滄帴鍏ュ晢鍜屽湴鍩熷甫鏉ョ殑鐢ㄦ埛璁塊棶閫熷害宸紓錛屾瘮濡?/span>ChinaNet鍜?/span>EduNet涔嬮棿鐨勫樊寮傚氨淇冧嬌浜嗗緢澶氱綉绔欏湪鏁欒偛緗戝唴鎼緩闀滃儚绔欑偣錛屾暟鎹繘琛屽畾鏃舵洿鏂版垨鑰呭疄鏃舵洿鏂般傚湪闀滃儚鐨勭粏鑺傛妧鏈柟闈紝榪欓噷涓嶉槓榪板お娣憋紝鏈夊緢澶氫笓涓氱殑鐜版垚鐨勮В鍐蟲灦鏋勫拰浜у搧鍙夈備篃鏈夊粔浠風殑閫氳繃杞歡瀹炵幇鐨勬濊礬錛屾瘮濡?/span>Linux涓婄殑rsync絳夊伐鍏楓?/span>
6銆佽礋杞藉潎琛?/span>
璐熻澆鍧囪 灝嗘槸澶у瀷緗戠珯瑙e喅楂樿礋鑽瘋闂拰澶ч噺騫跺彂璇鋒眰閲囩敤鐨勭粓鏋佽В鍐沖姙娉曘?/span>
璐熻澆鍧囪 鎶鏈彂灞曚簡澶氬勾錛屾湁寰堝涓撲笟鐨勬湇鍔℃彁渚涘晢鍜屼駭鍝佸彲浠ラ夋嫨錛屾垜涓漢鎺ヨЕ榪囦竴浜涜В鍐蟲柟娉曪紝鍏朵腑鏈変袱涓灦鏋勫彲浠ョ粰澶у鍋氬弬鑰冦?/span>
紜歡鍥涘眰浜ゆ崲
絎洓灞備氦鎹嬌鐢ㄧ涓夊眰鍜岀鍥涘眰淇℃伅鍖呯殑鎶ュご淇℃伅錛屾牴鎹簲鐢ㄥ尯闂磋瘑鍒笟鍔℃祦錛屽皢鏁翠釜鍖洪棿孌電殑涓氬姟嫻佸垎閰嶅埌鍚堥傜殑搴旂敤鏈嶅姟鍣ㄨ繘琛屽鐞嗐傘絎洓灞備氦鎹㈠姛鑳藉氨璞℃槸铏?/span>IP錛屾寚鍚戠墿鐞嗘湇鍔″櫒銆傚畠浼犺緭鐨勪笟鍔℃湇浠庣殑鍗忚澶氱澶氭牱錛屾湁HTTP銆?/span>FTP銆?/span>NFS銆?/span>Telnet鎴栧叾浠栧崗璁傝繖浜涗笟鍔″湪鐗╃悊鏈嶅姟鍣ㄥ熀紜涓婏紝闇瑕佸鏉傜殑杞介噺騫寵 綆楁硶銆傚湪IP涓栫晫錛屼笟鍔$被鍨嬬敱緇堢TCP鎴?/span>UDP绔彛鍦板潃鏉ュ喅瀹氾紝鍦ㄧ鍥涘眰浜ゆ崲涓殑搴旂敤鍖洪棿鍒欑敱婧愮鍜岀粓绔?/span>IP鍦板潃銆?/span>TCP鍜?/span>UDP绔彛鍏卞悓鍐沖畾銆?/span>
鍦ㄧ‖浠跺洓灞備氦鎹駭鍝侀鍩燂紝鏈変竴浜涚煡鍚嶇殑浜у搧鍙互閫夋嫨錛屾瘮濡?/span>Alteon銆?/span>F5絳夛紝榪欎簺浜у搧寰堟槀璐碉紝浣嗘槸鐗╂湁鎵鍊鹼紝鑳藉鎻愪緵闈炲父浼樼鐨勬ц兘鍜屽緢鐏墊椿鐨勭鐞嗚兘鍔涖?/span>Yahoo涓浗褰撳垵鎺ヨ繎2000鍙版湇鍔″櫒浣跨敤浜嗕笁鍥涘彴Alteon灝辨悶瀹氫簡銆?/span>
杞歡鍥涘眰浜ゆ崲
澶у鐭ラ亾浜嗙‖浠跺洓灞備氦鎹㈡満鐨勫師鐞嗗悗錛屽熀浜?/span>OSI妯″瀷鏉ュ疄鐜扮殑杞歡鍥涘眰浜ゆ崲涔熷氨搴旇繍鑰岀敓錛岃繖鏍風殑瑙e喅鏂規(guī)瀹炵幇鐨勫師鐞嗕竴鑷達紝涓嶈繃鎬ц兘紼嶅樊銆備絾鏄弧瓚充竴瀹氶噺鐨勫帇鍔涜繕鏄父鍒冩湁浣欑殑錛屾湁浜鴻杞歡瀹炵幇鏂瑰紡鍏跺疄鏇寸伒媧伙紝澶勭悊鑳藉姏瀹屽叏鐪嬩綘閰嶇疆鐨勭啛鎮(zhèn)夎兘鍔涖?/span>
杞歡鍥涘眰浜ゆ崲鎴戜滑鍙互浣跨敤Linux涓婂父鐢ㄧ殑LVS鏉ヨВ鍐籌紝LVS灝辨槸Linux Virtual Server錛屼粬鎻愪緵浜嗗熀浜庡績璺崇嚎heartbeat鐨勫疄鏃剁伨闅懼簲瀵硅В鍐蟲柟妗堬紝鎻愰珮緋葷粺鐨勯瞾媯掓э紝鍚屾椂鍙緵浜嗙伒媧葷殑铏氭嫙VIP閰嶇疆鍜岀鐞嗗姛鑳斤紝鍙互鍚屾椂婊¤凍澶氱搴旂敤闇姹傦紝榪欏浜庡垎甯冨紡鐨勭郴緇熸潵璇村繀涓嶅彲灝戙?/span>
涓涓吀鍨嬬殑浣跨敤璐熻澆鍧囪 鐨勭瓥鐣ュ氨鏄紝鍦ㄨ蔣浠舵垨鑰呯‖浠跺洓灞備氦鎹㈢殑鍩虹涓婃惌寤?/span>squid闆嗙兢錛岃繖縐嶆濊礬鍦ㄥ緢澶氬ぇ鍨嬬綉绔欏寘鎷悳绱㈠紩鎿庝笂琚噰鐢紝榪欐牱鐨勬灦鏋勪綆鎴愭湰銆侀珮鎬ц兘榪樻湁寰堝己鐨勬墿寮犳э紝闅忔椂寰鏋舵瀯閲岄潰澧炲噺鑺傜偣閮介潪甯稿鏄撱傝繖鏍風殑鏋舵瀯鎴戝噯澶囩┖浜嗕笓闂ㄨ緇嗘暣鐞嗕竴涓嬪拰澶у鎺㈣銆?/span>
瀵逛簬澶у瀷緗戠珯鏉ヨ錛屽墠闈㈡彁鍒扮殑姣忎釜鏂規(guī)硶鍙兘閮戒細琚悓鏃朵嬌鐢ㄥ埌錛屾垜榪欓噷浠嬬粛寰楁瘮杈冩祬鏄撅紝鍏蜂綋瀹炵幇榪囩▼涓緢澶氱粏鑺傝繕闇瑕佸ぇ瀹舵參鎱㈢啛鎮(zhèn)夊拰浣撲細錛屾湁鏃朵竴涓緢灝忕殑squid鍙傛暟鎴栬?/span>apache鍙傛暟璁劇疆錛屽浜庣郴緇熸ц兘鐨勫獎鍝嶅氨浼氬緢澶э紝甯屾湜澶у涓璧瘋璁猴紝杈懼埌鎶涚爾寮曠帀涔嬫晥銆?/span>
鍘熸枃閾炬帴錛?/span>http://sunjiuchen.spaces.live.com/Blog/cns!4FF388881B3FE073!113.entry
銆銆IDS鐨勬妧鏈墜孌靛叾瀹炲茍涓嶅緢紲炵錛屾帴涓嬫潵鏈枃浼氱敤涓縐?#8220;欏鴻棨鎽哥摐”鐨勮剦緇滐紝緇欏ぇ瀹朵粙緇嶄竴涓緝綆鍗曠殑IDS鍏ラ棬綰ф瀯鏋躲備粠甯傚満鍒嗗竷銆佸叆鎵嬮毦鏄撶殑瑙掑害鏉ョ湅錛岄夋嫨NIDS浣滀負鑼冧緥榪涜閮ㄧ講錛屾瘮杈冨湴鎭板綋銆傛湰鏂囦互瀹屽叏鐨刉indows騫沖彴鏉ヨ瘡絀挎暣涓叆渚?nobr>媯嫻?/nobr>嫻佺▼錛岀敱浜庣瘒騫呮墍闄愶紝浠ュ畾鎬?nobr>鍒嗘瀽瑙掑害鏉ラ檲榪般?
銆銆棰勫鐭ヨ瘑
銆銆IDS錛欼ntrusion Detection System錛堝叆渚墊嫻?nobr>緋葷粺錛夛紝閫氳繃鏀墮泦緗戠粶緋葷粺淇℃伅鏉ヨ繘琛屽叆渚墊嫻嬪垎鏋愮殑杞歡涓庣‖浠剁殑鏅鴻兘緇勫悎銆?
銆銆瀵笽DS榪涜鏍囧噯鍖栧伐浣滅殑涓や釜緇勭粐錛氫綔涓哄浗闄呬簰鑱旂綉鏍囧噯鐨勫埗瀹氳匢ETF鐨処ntrusion Detection working Group錛圛DWG錛屽叆渚墊嫻嬪伐浣滅粍錛夊拰Common Intrusion Detection Framework錛圕IDF錛岄氱敤鍏ヤ鏡媯嫻嬫鏋訛級銆?
銆銆IDS鍒嗙被錛歂etwork IDS錛堝熀浜庣綉緇滐級銆丠ost-based IDS錛堝熀浜庝富鏈猴級銆丠ybrid IDS錛堟販鍚堝紡錛夈丆onsoles IDS錛堟帶鍒跺彴錛夈丗ile Integrity Checkers錛堟枃浠跺畬鏁存ф鏌ュ櫒錛夈丠oneypots錛堣湝緗愶級銆備簨浠朵駭鐢熺郴緇?
銆銆鏍規(guī)嵁CIDF闃愯堪鍏ヤ鏡媯嫻嬬郴緇燂紙IDS錛夌殑閫氱敤妯″瀷鎬濇兂錛屽叿澶囨墍鏈夎绱犮佹渶綆鍗曠殑鍏ヤ鏡媯嫻嬬粍浠跺鍥炬墍紺恒傛牴鎹瓹IDF瑙勮寖錛屽皢IDS闇瑕佸垎鏋愮殑鏁版嵁緇熺О涓篍vent錛堜簨浠訛級錛孍vent鏃㈠彲鑳芥槸緗戠粶涓殑Data Packets錛堟暟鎹寘錛夛紝涔熷彲鑳芥槸浠嶴ystem Log絳夊叾浠栨柟寮忓緱鍒扮殑Information錛堜俊鎭級銆?
銆銆娌℃湁鏁版嵁嫻佽繘錛堟垨鏁版嵁琚噰闆嗭級錛孖DS灝辨槸鏃犳牴涔嬫湪錛屽畬鍏ㄦ棤鐢ㄦ涔嬪湴銆?
銆銆浣滀負IDS鐨勫熀灞傜粍緇囷紝浜嬩歡浜х敓緋葷粺澶у彲鏂藉睍鎷寵剼錛屽畠鏀墮泦琚畾涔夌殑鎵鏈変簨浠訛紝鐒跺悗涓鑲¤剳鍦頒紶鍒板叾瀹冪粍浠墮噷銆傚湪Windows鐜涓嬶紝鐩墠姣旇緝鍩烘湰鐨勫仛娉曟槸浣跨敤Winpcap鍜學inDump銆?
銆銆澶у鐭ラ亾錛屽浜庝簨浠朵駭鐢熷拰浜嬩歡鍒嗘瀽緋葷粺鏉ヨ錛岀溂涓嬫祦琛岄噰鐢↙inux鍜孶nix騫沖彴鐨勮蔣浠跺拰紼嬪簭錛涘叾瀹炲湪Windows騫沖彴涓紝涔熸湁綾諱技Libpcap錛堟槸Unix鎴朙inux浠庡唴鏍告崟鑾風綉緇滄暟鎹寘鐨勫繀澶囪蔣浠訛級鐨勫伐鍏峰嵆Winpcap銆?
銆銆Winpcap鏄竴濂楀厤璐圭殑錛?鍩轟簬Windows鐨勭綉緇滄帴鍙PI錛屾妸緗戝崱璁劇疆涓?#8220;娣鋒潅”妯″紡錛岀劧鍚庡驚鐜鐞嗙綉緇滄崟鑾風殑鏁版嵁鍖呫傚叾鎶鏈疄鐜扮畝鍗曪紝鍙Щ妞嶆у己錛屼笌緗戝崱鏃犲叧錛屼絾鏁堢巼涓嶉珮錛岄傚悎鍦?00 Mbps浠ヤ笅鐨勭綉緇?
銆銆鐩稿簲鐨勫熀浜嶹indows鐨勭綉緇滃梾鎺㈠伐鍏鋒槸WinDump錛堟槸Linux/Unix騫沖彴鐨凾cpdump鍦╓indows涓婄殑縐繪鐗堬級錛岃繖涓蔣浠跺繀欏誨熀浜嶹inpcap鎺ュ彛錛堣繖閲屾湁浜哄艦璞″湴縐癢inpcap涓猴細鏁版嵁鍡呮帰椹卞姩紼嬪簭錛夈備嬌鐢╓inDump錛屽畠鑳芥妸鍖歸厤瑙勫垯鐨勬暟鎹寘鐨勫寘澶寸粰鏄劇ず鍑烘潵銆備綘鑳戒嬌鐢ㄨ繖涓伐鍏峰幓鏌ユ壘緗戠粶闂鎴栬呭幓鐩戣緗戠粶涓婄殑鐘跺喌錛屽彲浠ュ湪涓瀹氱▼搴︿笂鏈夋晥鐩戞帶鏉ヨ嚜緗戠粶涓婄殑瀹夊叏鍜屼笉瀹夊叏鐨勮涓恒?
銆銆榪欎袱涓蔣浠跺湪緗戜笂閮藉彲浠ュ厤璐瑰湴鎵懼埌錛岃鑰呰繕鍙互鏌ョ湅鐩稿叧杞歡浣跨敤鏁欑▼銆?
銆銆涓嬮潰澶х暐浠嬬粛涓涓嬪緩绔嬩簨浠舵帰嫻嬪強閲囬泦鐨勬楠?
銆銆1銆佽閰嶈蔣浠跺拰紜歡緋葷粺銆傛牴鎹綉緇滅箒蹇欑▼搴﹀喅瀹氭槸鍚﹂噰鐢ㄦ櫘閫氬吋瀹規(guī)満鎴栨ц兘杈冮珮鐨勪笓鐢ㄦ湇鍔″櫒錛涘畨瑁匩T鏍稿績鐨刉indows
銆銆2銆佹湇鍔″櫒鐨勭┖闂村垝鍒嗚鍚堢悊鏈夋晥錛屾墽琛岀▼搴忕殑瀹夎銆佹暟鎹棩蹇楃殑瀛樺偍錛屼袱鑰呯┖闂存渶濂藉垎鍒斁緗湪涓嶅悓鍒嗗尯銆?
銆銆3銆乄inpcap鐨勭畝鍗曞疄鐜般傞鍏堝畨瑁呭畠鐨勯┍鍔ㄧ▼搴忥紝鍙互鍒板畠鐨勪富欏墊垨闀滃儚绔欑偣涓嬭澆WinPcap auto-installer (Driver+DLLs)錛岀洿鎺ュ畨瑁呫?
銆銆娉細濡傛灉鐢╓inpcap鍋氬紑鍙戯紝榪橀渶瑕佷笅杞?Developer錛噑 pack銆?
銆銆WinPcap 鍖呮嫭涓変釜
銆銆4銆乄inDump鐨勫垱寤恒傚畨瑁呭悗錛屽湪Windows鍛戒護鎻愮ず絎︽ā寮忎笅榪愯錛岀敤鎴瘋嚜宸卞彲浠ユ煡鐪嬬綉緇滅姸鎬侊紝鎭曚笉璧樿堪銆?
銆銆濡傛灉娌℃湁杞歡鍏煎鎬ч棶棰樸佸畨瑁呭拰閰嶇疆姝g‘鐨勮瘽錛屼簨浠舵帰嫻嬪強閲囬泦宸茶兘瀹炵幇銆?/p>
銆銆浜嬩歡鍒嗘瀽緋葷粺
銆銆鐢變簬鎴戜滑鐨勭綉緇滃ぇ閮界敤浜ゆ崲寮忎互澶綉浜ゆ崲鏈鴻繛鎺ワ紝鎵浠ュ緩绔嬩簨浠跺垎鏋愮郴緇熺殑鐩殑鏄疄鐜板澶氱緗戠粶闃茬伀澧欒澶囩殑鎺㈡祴錛屼互鍙婂縐嶉噰闆嗘柟寮忥紙濡傚熀浜嶴nmp銆丼yslog鏁版嵁淇℃伅鐨勯噰闆嗭級鏃ュ織鐨勬敮鎸侊紝騫舵彁渚涗竴瀹氱殑浜嬩歡鏃ュ織澶勭悊錛岀粺璁°佸垎鏋愬拰鏌ヨ鍔熻兘銆?
銆銆浜嬩歡鍒嗘瀽緋葷粺鏄疘DS鐨勬牳蹇冩ā鍧楋紝涓昏鍔熻兘鏄鍚勭浜嬩歡榪涜鍒嗘瀽錛屼粠涓彂鐜拌繚鍙嶅畨鍏ㄧ瓥鐣ョ殑琛屼負錛屽浣曞緩绔嬫槸閲嶇偣涔熸槸闅劇偣銆傚鏋滆嚜宸辮兘鎴栦笌浜哄悎浣滅紪鍐欒蔣浠剁郴緇燂紝灝遍渶瑕佸仛濂戒弗璋ㄧ殑鍓嶆湡寮鍙戝噯澶囷紝濡傚緗戠粶鍗忚銆侀粦瀹㈡敾鍑匯佺郴緇熸紡媧炴湁鐫姣旇緝娓呮櫚鐨勮璇嗭紝鎺ョ潃寮濮嬪埗瀹氳鍒欏拰絳栫暐錛屽畠搴旇鍩轟簬鏍囧噯鐨勬妧鏈爣鍑嗗拰瑙勮寖錛岀劧鍚庝紭鍖栫畻娉曚互鎻愰珮鎵ц鏁堢巼錛屽緩绔嬫嫻嬫ā鍨嬶紝鍙互妯℃嫙榪涜鏀誨嚮鍙婂垎鏋愯繃紼嬨?
銆銆浜嬩歡鍒嗘瀽緋葷粺鎶婃嫻嬪紩鎿庨┗鐣欏湪鐩戣緗戞涓紝涓鑸氳繃涓夌鎶鏈墜孌佃繘琛屽垎鏋愶細妯″紡鍖歸厤銆佸崗璁垎鏋愬拰琛屼負鍒嗘瀽銆傚綋媯嫻嬪埌鏌愮璇敤妯″紡鏃訛紝浜х敓瀵瑰簲鐨勮鍛婁俊鎭茍鍙戦佺粰鍝嶅簲緋葷粺銆傜洰鍓嶆潵鐪嬶紝浣跨敤鍗忚鍒嗘瀽鏄疄鏃舵嫻嬬殑鏈濂芥柟寮忋?
銆銆榪欎釜緋葷粺涓縐嶅彲鑳界殑鏂瑰紡鏄敱鍗忚鍒嗘瀽鍣ㄤ綔涓轟富浣擄紝鍙互鍦ㄧ幇鎴愮殑銆佸紑鏀懼紡鐨勫崗璁垎鏋愬伐鍏峰寘鍩虹涓婃潵鏋勫緩錛涘崗璁垎鏋愬櫒鍙互鏄劇ず鍒嗙粍綰х綉緇滀紶杈撴祦錛屽熀浜庣綉緇滃崗璁鍒欑殑璀﹀憡榪涜鑷姩鍒嗘瀽鏉ュ揩閫熸帰嫻嬫敾鍑葷殑瀛樺湪錛涚敱姝わ紝緗戠粶紼嬪簭鍛樺拰綆$悊鍛樺彲鐩戞帶騫跺垎鏋愮綉緇滄椿鍔紝浠庤屼富鍔ㄦ嫻嬪茍瀹氫綅鏁呴殰銆傜敤鎴峰彲浠ュ皾璇曚竴涓嬩竴涓彨Ethereal鐨勫厤璐圭綉緇滃崗璁垎鏋愬櫒錛屽畠鏀寔Windows緋葷粺銆傜敤鎴峰彲浠ュ鐢變簨浠朵駭鐢熺郴緇熸姄鍙栧悗淇濆瓨鍦ㄧ‖鐩樹笂鐨勬暟鎹繘琛屽垎鏋愩備綘鑳戒氦浜掑紡鍦版祻瑙堟姄鍙栧埌鐨勬暟鎹寘錛屾煡鐪嬫瘡涓涓暟鎹寘鐨勬憳瑕佸拰璇︾粏淇℃伅銆侲thereal鏈夊縐嶅己澶х殑鐗瑰緛錛屽鏀寔鍑犱箮鎵鏈夌殑鍗忚銆佷赴瀵岀殑榪囨護璇█銆佹槗浜庢煡鐪婽CP浼氳瘽緇忛噸鏋勫悗鐨勬暟鎹祦絳夈?
銆銆鍝嶅簲緋葷粺
銆銆鍝嶅簲緋葷粺鏄潰鍚戜漢銆佺墿鐨勪氦浜掔郴緇燂紝鍙互璇存槸鏁翠釜緋葷粺鐨勪腑杞珯鍜屽崗璋冪珯銆備漢鍗蟲槸緋葷粺綆$悊鍛樸佺墿鏄叾浠栨墍鏈夌粍浠躲傝緇嗚鏉ワ紝鍝嶅簲緋葷粺榪欎釜鍗忚皟鍛樿鍋氱殑浜嬪緢澶氾細鎸夌収棰勭疆瀹氫箟鐨勬柟寮忥紝璁板綍瀹夊叏浜嬩歡銆佷駭鐢熸姤璀︿俊鎭紙濡侲-mail褰㈠紡錛夈佽褰曢檮鍔犳棩蹇椼侀殧紱誨叆渚佃呫佺粓姝㈣繘紼嬨佺姝㈠彈瀹寵呯殑绔彛鍜屾湇鍔°佺敋鑷沖弽鎴堜竴鍑伙紱鍙互閲囧彇浜哄伐鍝嶅簲鍜岃嚜鍔ㄥ搷搴旓紙鍩轟簬鏈哄櫒鐨勫搷搴旓級錛屼袱鑰呯粨鍚堣搗鏉ヤ細姣旇緝濂姐?
銆銆鍝嶅簲緋葷粺鐨勮璁¤绱?
銆銆(1) 鎺ュ彈鑷簨浠朵駭鐢熺郴緇熺粡浜嬩歡鍒嗘瀽緋葷粺榪囨護銆佸垎鏋愩侀噸寤哄悗鐨勪簨浠惰鎶ヤ俊鎭紝鐒跺悗浜や簰緇欑敤鎴鳳紙綆$悊鍛橈級鏌ヨ騫跺仛鍑鴻鍒欏垽鏂拰閲囧彇綆$悊琛屼負銆?
銆銆(2) 緇欑鐞嗗憳鎻愪緵綆$悊浜嬩歡
銆銆(3)浣滅敤浜庡墠绔郴緇熸椂錛屽彲綆$悊浜嬩歡浜х敓銆佸垎鏋愮郴緇燂紙鍚堢О浜嬩歡鎺㈡祴鍣級錛屽璇ョ郴緇熼噰闆嗐佹帰嫻嬨佸垎鏋愮殑浜嬩歡榪涜鍒嗙被銆佺瓫閫夛紝鍙拡瀵逛笉鍚屽畨鍏ㄧ姸鍐碉紝閲嶆柊瀵瑰畨鍏ㄨ鍒欒繘琛屾礂鐗屻?
銆銆鍝嶅簲緋葷粺鍜屼簨浠舵帰嫻嬪櫒閫氬父鏄互搴旂敤紼嬪簭鐨勫艦寮忓疄鐜般?
銆銆璁捐鎬濊礬錛氬搷搴旂郴緇熷彲鍒嗕負涓や釜紼嬪簭閮ㄥ垎錛岀洃鍚拰鎺у埗銆?鐩戝惉閮ㄥ垎緇戝畾鏌愪釜絀洪棽绔彛錛屾帴鏀朵粠浜嬩歡鎺㈡祴鍣ㄥ彂鍑虹殑鍒嗘瀽緇撴灉鍜屽叾浠栦俊鎭紝騫惰漿鍖栧瓨鍌ㄦ枃浠跺埌浜嬩歡鏁版嵁搴撶郴緇熶腑錛屼綔涓虹鐞嗗憳鍙牴鎹敤鎴鋒潈闄愯皟鐢ㄦ潵鍙銆佷慨鏀逛互鍙婄壒鍒殑鎿嶄綔銆傛帶鍒墮儴鍒嗗彲鐢℅TK錛嬫潵緙栧啓GUI錛屽紑鍙戝嚭杈冧負鐩磋鐨勫浘褰㈢敤鎴風晫闈紝鐩殑涓昏鏄粰鐢ㄦ埛涓涓洿鏂逛究鍙嬪ソ鐨勭晫闈㈡潵嫻忚璀﹀憡淇℃伅銆?
銆銆浜嬩歡鏁版嵁搴撶郴緇?
銆銆鍦╓indows騫沖彴涓嬶紝铏界劧Access鏇存槗鎺屾彙錛屼絾閲囩敤SQL Server 2000鏋勫緩浼氭瘮Access鏈夋晥錛岃屼笖騫朵笉鏄緢闅懼叆鎵嬶紝姝ょ郴緇熶富瑕佸姛鑳斤細璁板綍銆佸瓨鍌ㄣ侀噸鎺掍簨浠朵俊鎭紝鍙緵綆$悊鍛樿皟鐢ㄦ煡鐪嬪拰瀵規(guī)敾鍑誨鏌ュ彇璇佷嬌鐢ㄣ?
銆銆姝ょ郴緇熸瀯閫犵浉瀵圭畝鍗曪紝鍙渶鍒╃敤鍒版暟鎹簱杞歡鐨勪竴浜涘熀鏈姛鑳姐?
銆銆瑕佸崗璋冨悇緇勪歡涔嬮棿鐨勬湁鐩殑閫氫俊錛屽悇緇勪歡灝卞繀欏昏兘姝g‘鐞嗚В鐩鎬簰涔嬮棿浼犻掔殑鍚勭鏁版嵁鐨勮涔夈傚彲鍙傝僀IDF鐨勯氫俊鏈哄埗錛屾瀯寤?灞傛ā鍨嬨傛敞鎰忓悇涓粍浠朵箣闂寸殑浜掓搷浣滄э紝淇濊瘉瀹夊叏銆侀珮鏁堛侀『鐣呫?
銆銆鏁村悎鍦ㄥ悗緇殑宸ヤ綔涓細涓嶆柇榪涜錛屽悇涓粍浠剁殑鍔熻兘涔熶細涓嶆柇瀹屽杽銆備竴涓熀鏈殑銆佸熀浜嶹indows騫沖彴鐨処DS妗嗘灦灝辨瀯寤哄畬姣曘傛弧瓚崇綉緇滄潯浠剁殑璇濓紝璇曡瘯浜叉墜鍋氬仛鑷繁鐨勫ザ閰惂錛屾湁涓縐嶄笉鍙悕鐘剁殑鍔充綔鍚庣殑鐢滆湝銆?/p>
鍦ㄨ繘琛屽綰跨▼紼嬪簭璁捐鐨勬椂鍊?鎴戜滑緇忓父鐢ㄥ埌AfxBeginThread鍑芥暟鏉ュ惎鍔ㄤ竴鏉$嚎紼?br>璇ュ嚱鏁頒嬌鐢ㄨ搗鏉ラ潪甯哥殑綆鍗曟柟渚?鍏跺畾涔夊涓?CWinThread* AfxBeginThread(
AFX_THREADPROC pfnThreadProc,//綰跨▼鍑芥暟鍦板潃
LPVOID pParam,//綰跨▼鍙傛暟
int nPriority = THREAD_PRIORITY_NORMAL,//綰跨▼浼樺厛綰?br> UINT nStackSize = 0,//綰跨▼鍫嗘爤澶у皬,榛樿涓?M
DWORD dwCreateFlags = 0,//
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);CWinThread* AfxBeginThread(
CRuntimeClass* pThreadClass,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);鍙傛暟璇存槑:
pfnThreadProc:綰跨▼鍑芥暟鐨勫湴鍧,璇ュ弬鏁頒笉鑳借緗負NULL,綰跨▼鍑芥暟蹇呴』瀹氫箟鎴愬叏灞鍑芥暟鎴栬呯被鐨勯潤鎬佹垚鍛樺嚱鏁?br>渚嬪:
UINT myThreadFunc(LPVOID lparam)
鎴栬?br>class A
{
public:
static UINT __stdcall myThreadFunc(LPVOID lparam);
}
涔嬫墍浠ヨ瀹氫箟鎴愮被鐨勯潤鎬佹垚鍛樺嚱鏁?鏄洜涓虹被鐨勯潤鎬佹垚鍛樺嚱鏁頒笉灞炰簬鏌愪釜綾誨璞?榪欐牱鍦ㄨ皟鐢ㄥ嚱鏁?br>鐨勬椂鍊欏氨涓嶇敤浼犻掍竴涓澶栫殑this鎸囬拡.pThreadClass:鎸囧悜浠嶤WinThread媧劇敓鐨勫瓙綾誨璞$殑RUNTIME_CLASS
pParam:瑕佷紶閫掔粰綰跨▼鍑芥暟鐨勫弬鏁?/p>
nPriority:瑕佸惎鍔ㄧ殑綰跨▼鐨勪紭鍏堢駭,榛樿浼樺厛綰т負THREAD_PRIORITY_NORMAL(鏅氫紭鍏堢駭),鍏充簬綰跨▼
浼樺厛綰х殑璇︾粏璇存槑璇峰弬鑰働latform SDK SetThreadPriority鍑芥暟璇存槑nStackSize:鏂扮嚎紼嬬殑鍫嗘爤澶у皬,濡傛灉璁劇疆涓?,鍒欎嬌鐢ㄩ粯璁ゅぇ灝?鍦ㄥ簲鐢ㄧ▼搴忎腑涓鑸儏鍐典笅綰跨▼鐨勯粯璁ゅ爢鏍堝ぇ灝?br> 涓?M
dwCreateFlags:綰跨▼鍒涘緩鏍囧織,璇ュ弬鏁板彲浠ユ寚瀹氫負涓嬪垪鏍囧織
CREATE_SUSPENDED:浠ユ寕璧鋒柟寮忓惎鍔ㄧ嚎紼?濡傛灉浣犲湪綰跨▼鍚姩涔嬪墠鎯沖垵濮嬪寲涓浜汣WinThread綾諱腑鐨勪竴浜涙垚鍛樺彉閲?br> 姣斿:m_bAutoDelete鎴栬呬綘鐨勬淳鐢熺被涓殑鎴愬憳鍙橀噺,褰撳垵濮嬪寲瀹屾垚涔嬪悗,浣犲彲浠ヤ嬌鐢–WinThread綾葷殑ResumeThread
鎴愬憳鍑芥暟鏉ユ仮澶嶇嚎紼嬬殑榪愯
濡傛灉鎶婅鏍囧織璁劇疆涓?,鍒欒〃紺虹珛鍗沖惎鍔ㄧ嚎紼?br>lpSecurityAttrs:鎸囧悜瀹夊叏鎻忚堪絎︾殑鎸囬拡,濡傛灉浣跨敤榛樿鐨勫畨鍏ㄧ駭鍒彧瑕佽璇ュ弬鏁拌緗負NULL灝卞彲浠ヤ簡!涓婇潰灝辨槸AfxBeginThread鍑芥暟鐨勭畝鍗曡鏄?鎴戜滑鍦ㄤ嬌鐢ㄧ殑鏃跺欎竴鑸儏鍐典笅鍙鎸囧畾鍓嶄袱涓弬鏁?鍏朵粬
鍙傛暟浣跨敤榛樿鍊煎氨鍙互.鍡?鐨勭‘,浣跨敤璧鋒潵鏄緢綆鍗?鍙榪欎釜鍑芥暟涓琚皟鐢?灝卞垱寤轟簡涓涓嚎紼?
浣嗘槸澶у鏈夋病鏈夋兂榪?AfxBeginThread鍑芥暟絀剁珶鏄浣曞惎鍔ㄧ殑綰跨▼鍛?瀹冪殑鍐呴儴鏄浣曞疄鐜扮殑鍛?涓嬮潰鎴戜滑灝辨潵鐪嬩竴涓婣fxBeginThread鍑芥暟鐨勫唴閮ㄥ疄鐜?/p>
//鍚姩worker綰跨▼
CWinThread* AFXAPI AfxBeginThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam,
int nPriority, UINT nStackSize, DWORD dwCreateFlags,
LPSECURITY_ATTRIBUTES lpSecurityAttrs)
{
#ifndef _MT
pfnThreadProc;
pParam;
nPriority;
nStackSize;
dwCreateFlags;
lpSecurityAttrs;return NULL;
#else
ASSERT(pfnThreadProc != NULL);CWinThread* pThread = DEBUG_NEW CWinThread(pfnThreadProc, pParam);
ASSERT_VALID(pThread);if (!pThread->CreateThread(dwCreateFlags|CREATE_SUSPENDED, nStackSize,
lpSecurityAttrs))
{
pThread->Delete();
return NULL;
}
VERIFY(pThread->SetThreadPriority(nPriority));
if (!(dwCreateFlags & CREATE_SUSPENDED))
VERIFY(pThread->ResumeThread() != (DWORD)-1);return pThread;
#endif //!_MT)
}//鍚姩UI綰跨▼
CWinThread* AFXAPI AfxBeginThread(CRuntimeClass* pThreadClass,
int nPriority, UINT nStackSize, DWORD dwCreateFlags,
LPSECURITY_ATTRIBUTES lpSecurityAttrs)
{
#ifndef _MT
pThreadClass;
nPriority;
nStackSize;
dwCreateFlags;
lpSecurityAttrs;return NULL;
#else
ASSERT(pThreadClass != NULL);
ASSERT(pThreadClass->IsDerivedFrom(RUNTIME_CLASS(CWinThread)));CWinThread* pThread = (CWinThread*)pThreadClass->CreateObject();
if (pThread == NULL)
AfxThrowMemoryException();
ASSERT_VALID(pThread);pThread->m_pThreadParams = NULL;
if (!pThread->CreateThread(dwCreateFlags|CREATE_SUSPENDED, nStackSize,
lpSecurityAttrs))
{
pThread->Delete();
return NULL;
}
VERIFY(pThread->SetThreadPriority(nPriority));
if (!(dwCreateFlags & CREATE_SUSPENDED))
VERIFY(pThread->ResumeThread() != (DWORD)-1);return pThread;
#endif //!_MT
}浠庝笂闈㈢殑浠g爜涓彲浠ョ湅鍑篈fxBeginThread鎵鍋氱殑浜嬫儏涓昏鏈変互涓嬪嚑鐐?
1.鍦╤eap涓厤緗竴涓柊鐨凜WinThread瀵硅薄(worker綰跨▼)
浠g爜濡?CWinThread* pThread = DEBUG_NEW CWinThread(pfnThreadProc, pParam);
璋冪敤CRuntimeClass緇撴瀯涓殑CreateObject鍑芥暟鍒涘緩CWinThread瀵硅薄
CWinThread* pThread = (CWinThread*)pThreadClass->CreateObject();
CRuntimeClass浠ュ強MFC鐩稿叧綾葷殑鍐呴儴瀹炵幇,璇︽儏璇峰弬鑰?br>銆婃繁鍏ユ祬鍑篗FC銆嬩警鎹瘋憲2.璋冪敤CWinThread::CreateThread()騫惰瀹氬睘鎬?浣跨嚎紼嬩互鎸傝搗鐘舵佷駭鐢?br>pThread->CreateThread(dwCreateFlags|CREATE_SUSPENDED, nStackSize,lpSecurityAttrs);
3.璁懼畾綰跨▼鐨勪紭鍏堟潈
pThread->SetThreadPriority(nPriority);4.璋冪敤CWinThread::ResumeThread
pThread->ResumeThread();
閫氳繃涓婇潰鐨勮鏄?鎴戞兂澶у瀵硅鍑芥暟鍒板簳鍦ㄥ唴閮ㄩ兘鍋氫簡浠涔?搴旇鏈変竴涓垵姝ョ殑浜嗚В浜?
瀵逛簬VC鑰佹墜鏉ヨ,榪欑瘒鏂囩珷鍙兘騫舵病鏈変粈涔堝彲璇諱箣澶?浣嗘槸瀵逛簬鍒濆鑰呮潵璇?榪樻槸鏈変竴瀹氱殑
浠峰肩殑!
鎬諱箣,甯屾湜榪欑瘒鏂囩珷鑳界粰鍚勪綅涓鐐圭偣鐨勫府鍔?
WaitForSingleObject 鐨勭敤娉?/font>
DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds );
鍙傛暟 hHandle 鏄竴涓簨浠剁殑鍙ユ焺錛岀浜屼釜鍙傛暟 dwMilliseconds 鏄椂闂撮棿闅斻傚鏋滄椂闂存槸鏈変俊鍙風姸鎬佽繑鍥?/span> WAIT_OBJECT_0 錛屽鏋滄椂闂磋秴榪?/span> dwMilliseconds 鍊間絾鏃墮棿浜嬩歡榪樻槸鏃犱俊鍙風姸鎬佸垯榪斿洖 WAIT_TIMEOUT 銆?br>
hHandle 鍙互鏄笅鍒楀璞$殑鍙ユ焺錛?br>Change notification
Console input
Event
Job
Memory resource notification
Mutex
Process
Semaphore
Thread
Waitable timer
WaitForSingleObject 鍑芥暟鐢ㄦ潵媯嫻?/font> hHandle 浜嬩歡鐨勪俊鍙風姸鎬侊紝褰撳嚱鏁扮殑鎵ц鏃墮棿瓚呰繃 dwMilliseconds 灝辮繑鍥烇紝浣嗗鏋滃弬鏁?/font> dwMilliseconds 涓?/font> INFINITE 鏃跺嚱鏁板皢鐩村埌鐩稿簲鏃墮棿浜嬩歡鍙樻垚鏈変俊鍙風姸鎬佹墠榪斿洖錛屽惁鍒欏氨涓鐩寸瓑寰呬笅鍘伙紝鐩村埌 WaitForSingleObject 鏈夎繑鍥炵洿鎵嶆墽琛屽悗闈㈢殑浠g爜銆傚湪榪欓噷涓句釜渚嬪瓙錛?/font>
鍏堝垱寤轟竴涓叏灞 Event 瀵硅薄 g_event:
CEvent g_event;
鍦ㄧ▼搴忎腑鍙互閫氳繃璋冪敤 CEvent::SetEvent 璁劇疆浜嬩歡涓烘湁淇″彿鐘舵併?/span>
涓嬮潰鏄竴涓嚎紼嬪嚱鏁?/span> MyThreadPro()
UINT CFlushDlg::MyThreadProc( LPVOID pParam )
{
WaitForSingleObject(g_event,INFINITE);
For(;;)
{
………… .
}
return 0;
}
鍦ㄨ繖涓嚎紼嬪嚱鏁頒腑鍙湁璁劇疆 g_event 涓烘湁淇″彿鐘舵佹椂鎵嶆墽琛屼笅闈㈢殑 for 寰幆錛屽洜涓?/span> g_event 鏄叏灞鍙橀噺錛屾墍浠ユ垜浠彲浠ュ湪鍒殑綰跨▼涓氳繃 g_event. SetEvent 鎺у埗榪欎釜綰跨▼銆?/span>
榪樻湁涓縐嶇敤娉曞氨鏄垜浠彲浠ラ氳繃 WaitForSingleObject 鍑芥暟鏉ラ棿闅旂殑鎵ц涓涓嚎紼嬪嚱鏁扮殑鍑芥暟浣?/span>
UINT CFlushDlg::MyThreadProc( LPVOID pParam ) 鍦ㄨ繖涓嚎紼嬪嚱鏁頒腑鍙互鍙互閫氳繃璁劇疆 MT_INTERVAL 鏉ユ帶鍒惰繖涓嚎紼嬬殑鍑芥暟浣撳涔呮墽琛屼竴嬈★紝褰撲簨浠朵負鏃犱俊鍙風姸鎬佹椂鍑芥暟浣撻殧 MT_INTERVAL 鎵ц涓嬈★紝褰撹緗簨浠朵負鏈変俊鍙風姸鎬佹椂錛岀嚎紼嬪氨鎵ц瀹屾瘯浜嗐?/span>
{
while(WaitForSingleObject(g_event,MT_INTERVAL)!=WAIT_OBJECT_0)
{
}
return 0;
}
]]>