锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品久久久www,久久精品aⅴ无码中文字字幕重口,国产精品视频久久http://m.shnenglu.com/deane/articles/75451.html鏉庨槼鏉庨槼Tue, 03 Mar 2009 12:10:00 GMThttp://m.shnenglu.com/deane/articles/75451.htmlhttp://m.shnenglu.com/deane/comments/75451.htmlhttp://m.shnenglu.com/deane/articles/75451.html#Feedback0http://m.shnenglu.com/deane/comments/commentRss/75451.htmlhttp://m.shnenglu.com/deane/services/trackbacks/75451.html

鎬諱綋璁捐鍜岀櫥闄嗘湇鍔″櫒 [娓告垙鏈嶅姟鍣ㄧ殑璁捐鎬濊礬 杞琞

2007/01/29    01:41    6306    huzhangyou2002
浣滆呭崥瀹細
http://blog.csdn.net/yahle
澶х翰錛?br>欏圭洰鐨勫巻鍙茶儗鏅?br>
鏈嶅姟鍣?/font>鐨勮璁℃濊礬
鏈嶅姟鍣ㄧ殑鎶鏈?br>鏈嶅姟鍣ㄧ殑璁捐
鏈嶅姟鍣ㄧ殑鏀硅繘
鍥懼艦寮曟搸myhoho鍙奤I搴撶殑璁捐

瀹㈡埛绔笌鏈嶅姟鍣ㄧ殑闆嗘垚


緗戠粶娓告垙涓鑸噰鐢–\S妯″紡錛岀綉緇滄父鎴忕殑璁捐閲嶇偣錛屾垜璁や負鍦ㄤ簬Server绔?涔熷氨鏄垜浠鐨勬湇鍔″櫒銆傚湪鏈嶅姟鍣ㄧ鐨勮璁★紝鎴戞妸鏈嶅姟鍣ㄦ寜鐓у姛鑳藉垎涓?涓儴鍒嗭紝涓涓礋璐f父鎴忎笘鐣岀殑澶勭悊錛屼竴涓湇鍔″櫒鏈嶅姟鍣ㄤ笌瀹㈡埛绔殑閫氳銆傚湪璐熻矗娓告垙涓栫晫鐨勫鐞嗙殑鏈嶅姟鍣紝鎴戝張鎸夌収鍔熻兘鍒嗕負鍦板浘鏈嶅姟鍣ㄥ拰閫昏緫鏈嶅姟鍣ㄣ傝繖鏍峰垝鍒嗙殑渚濇嵁鏄粬浠鐞嗙殑鍐呭涓嶅悓榪涜銆傚綋鍒濈殑璁捐榪樿冭檻鍒扮郴緇熺殑闆嗙兢鍔熻兘錛屽彲浠ユ妸娓告垙鐨勫湴鍥劇Щ鍔ㄥ鐞嗗拰娓告垙鐨勯昏緫澶勭悊閮藉垎鍒垎鎽婂埌鍏跺畠鏈嶅姟鍣ㄩ噷闈㈠幓銆備絾鏄仛鍒版渶鍚庯紝鍙戠幇榪欐牱鐨勮璁′篃涓嶆槸澶ソ錛屼富瑕佹槸鍥犱負鍦ㄥ鐞嗕竴浜涙父鎴忎簨浠剁殑鏃跺欓渶瑕佷袱涓湇鍔″櫒涔嬮棿榪涜鍗忓悓錛岃繖鏍峰娍蹇呰鍒涘緩涓瀹氱殑緗戠粶娓告垙娑堟伅錛屽湪寮濮嬪埗浣滄父鎴忕殑鏃跺欙紝鍥犱負闇瑕佺郴緇熺殑涓滆タ涓嶆槸寰堝錛屾墍浠ユ病鏈夊お娉ㄦ剰錛屽埌欏圭洰鐨勫悗鏈燂紝鎯沖鍔犱竴涓姛鑳界殑鏃跺欙紝灝卞彂鐜板湪澶勭悊鑸瑰彧娌夋病鐨勬椂鍊欙紝鏈嶅姟鍣ㄩ渶瑕佷紶閫掑緢澶氬悓姝ユ暟鎹紝鑰屼笖鏈嶅姟鍣ㄥ悇鑷湪璁劇疆鐜╁鏁版嵁鐨勬椂鍊欙紝涔熸湁寰堝閲嶅鐨勫湴鏂廣傚鏋滀粖鍚庤繕瑕佸啀鍔犵偣浠涔堝叾瀹冨姛鑳斤紝閭h鍚屾鐨勫湴鏂瑰氨瀹炲湪鏄お澶氫簡錛屾墍浠ユ寜鐓у姛鑳芥妸鏈嶅姟鍣ㄥ垎涓?涓儴鍒嗙殑璁捐榪樻槸瀛樺湪緙洪櫡鐨勶紝濡傛灉璁╂垜閲嶆柊鍐嶆潵錛屾垜浼氶夋嫨鍗曟湇鍔″櫒鐨勮璁★紝褰撶劧榪欎釜鏈嶅姟鍣ㄨ繕鏄鍜岃繛鎺ユ湇鍔″櫒榪涜鍒嗙錛屽洜涓烘父鎴忕殑閫昏緫澶勭悊鍜屼笌鐜╁鐨勯氳榪樻槸寰堝ソ鍒嗗紑鐨勶紝鑰屼笖鍒嗗紑鐨勮瘽錛屼篃鏈夊埄浜庨昏緫鏈嶅姟鍣ㄧ殑璁捐銆?br>






鐧婚檰錛堣繛鎺ワ級鏈嶅姟鍣ㄧ殑璁捐錛?br>


   鍦ㄧ綉緇滄父鎴忛噷錛屽叾涓竴涓緢澶х殑闅劇偣灝辨槸鐜╁涓庢湇鍔″櫒鐨勯氳錛屽湪Windos鐨勬湇鍔″櫒鏋舵瀯涓嬶紝緗戠粶娓告垙鏈嶅姟鍣ㄧ閲囩敤鐨処/O妯″瀷錛岄氬父鏄畬鎴愮鍙c傚湪欏圭洰寮濮嬫椂鐮旂┒瀹屾垚绔彛錛屾劅瑙夊緢闅撅紝鏍規湰鐪嬩笉鎳傦紝鍥犱負瀹冨湪寰堝鍦版柟涓庝互鍓嶅啓緗戠粶閫氳杞歡鏃剁敤鐨勬柟娉曚笉鍚屻備絾鏄綋鎴戝垎鏋愯繃3涓畬鎴愮鍙g殑紼嬪簭鍚庯紝鍩烘湰浜嗚В鐨勫畠鐨勪嬌鐢ㄦ柟娉曘傝屼笖鍦ㄦ噦浠ュ悗錛屽洖榪囧ご鏉ョ湅錛屽叾瀹冨畬鎴愮鍙g殑姒傚康涔熶笉鏄緢澶嶆潅錛屽彧瑕佽兘娓呮鐨勪簡瑙e嚑涓嚱鏁扮殑浣跨敤鏂規硶浠ュ強鍩烘湰鐨勫鐞嗘鏋舵祦紼嬶紝浣犲氨浼氬彂鐜板畠鍏跺疄闈炲父鐨勭畝鍗曘?br>


   瀹屾垚绔彛鐨勪竴浜涢渶瑕佺悊瑙g殑鍦版柟錛?br>


1銆傛秷鎭槦鍒?br>


2銆傚伐浣滅嚎紼?br>


3銆傜綉緇滄秷鎭繑鍥炵粨鏋勪綋







   涓鑸垜浠湪璁捐鏈嶅姟鍣ㄧ鐨勬椂鍊欙紝鏈鍏抽敭鐨勫湴鏂規槸濡備綍鍒嗚京鍒氬垰鏀跺埌鐨勭綉緇滄暟鎹槸鐢遍偅涓帺瀹跺彂閫佽繃鏉ョ殑錛屽鏋滄槸閲囩敤娑堟伅浜嬩歡椹卞姩鐨勮瘽錛屾槸鍙互寰楀埌涓涓猻ocket鐨勫鹼紝鐒跺悗鍐嶇敤榪欎釜鍊間笌緋葷粺閲屽瓨鍦ㄧ殑socket榪涜姣斿錛岃繖鏍峰氨鍙互寰楀埌鏄偅浣嶇帺瀹跺彂閫佽繃鏉ョ殑娓告垙娑堟伅銆傛垜鍦ㄨ繕娌℃湁浣跨敤瀹屾垚绔彛鐨勬椂鍊欙紝灝辨槸浣跨敤榪欎釜鏂規硶銆傝繖鏍風殑璁捐鏈変竴涓己鐐瑰氨鏄瘡嬈℃敹鍒版暟鎹殑鏃跺欏洖嫻垂寰堝鏃墮棿鍦ㄤ簬紜畾娑堟伅鍙戦佽呰韓浠戒笂銆備絾鏄湪瀹屾垚绔彛鐨勮璁¢噷錛屾垜浠彲浠ラ噰鐢ㄤ竴涓彇宸х殑鏂規硶榪涜璁捐銆傛墍浠ワ紝榪欎釜闂寰堣交鏄撶殑灝辯粨灞浜嗭紝鑰屼笖緋葷粺寮閿涔熶笉鏄緢澶э紝鍏充簬瀹屾垚绔彛錛屽彲浠ュ弬鑰冧竴涓嬬殑鏂囩珷錛?br>


銆婂叧浜嶹insock寮傛I/O妯″瀷涓殑浜嬩歡妯″瀷銆?br>


http://search.csdn.net/Expert/topic/166/166227.xml?temp=.4639093



銆婃墜鎶婃墜鏁欎綘鐜╄漿SOCKET妯″瀷涔嬮噸鍙營/O綃囥?br>


http://blog.csdn.net/piggyxp/archive/2004/09/23/114883.aspx



銆婂涔犳棩璁癩IOCP鐨勫涔狅紞錛嶅垵姝ョ悊瑙c?br>


http://www.gameres.com/bbs/showthread.asp?threadid=25898



銆婄敤瀹屾垚绔彛寮鍙戝ぇ鍝嶅簲瑙勬ā鐨刉insock搴旂敤紼嬪簭銆?br>


http://www.xiaozhou.net/ReadNews.asp?NewsID=901



銆婄悊瑙/O Completion Port銆?br>


http://dev.gameres.com/Program/Control/IOCP.htm



鍑犱釜鍏抽敭鍑芥暟鐨勮鏄庯細



http://msdn.microsoft.com/library/en-us/fileio/fs/postqueuedcompletionstatus.asp?frame=true



http://msdn.microsoft.com/library/en-us/fileio/fs/createiocompletionport.asp?frame=true



http://msdn.microsoft.com/library/en-us/fileio/fs/getqueuedcompletionstatus.asp?frame=true



http://msdn.microsoft.com/library/en-us/winsock/winsock/wsarecv_2.asp?frame=true







濡傛灉浣犺兘璁ょ湡鐨勬悶娓呮涓婇潰鐨勪笢瑗匡紝鎴戜及璁′綘紱葷悊瑙e畬鎴愮鍙e氨鍙湁涓姝ヤ簡銆傚墿涓嬬殑榪欎竴姝ュ氨鏄嚜宸辯紪鐮佸疄鐜頒竴涓笅浜嗐傛湁浜涙椂鍊欙紝鐪嬪緱鎳備簡涓嶄竴瀹氫細瀹為檯搴旂敤錛屼笉瀹炲疄鍦ㄥ湪鐨勫啓涓鐐圭▼搴忥紝楠岃瘉涓涓嬩綘鐨勬兂娉曪紝鏄笉浼氱湡姝f悶娓呮鍘熺悊鐨勩?br>






涓嶈繃闄ら潪浣犳兂娣卞叆鐨勭爺絀剁綉緇滄妧鏈紝鍚﹀垯鍙鐭ラ亾鎬庝箞鐢ㄥ氨鍙互浜嗭紝鍓╀笅鐨勫氨鏄鎵句竴涓悎閫傜殑鍒漢灝佽濂界殑綾繪潵浣跨敤銆傝繖鏍峰彲浠ヨ妭鐪佷綘寰堝鐨勪簨浠訛紝褰撶劧鎷挎潵鐨勪笢瑗挎渶濂芥湁婧愪唬鐮侊紝榪欐牱濡傛灉鍙戠敓浠涔堥棶棰橈紝浣犱篃濂界‘瀹氭槸鍦ㄩ偅涓湴鏂瑰嚭閿欙紝瑕佹敼鎴栬呮墿鍏呭姛鑳介兘浼氭柟渚垮緢澶氥傚綋鐒訛紝榪樿娉ㄦ剰浜哄鐨勭増鏉冿紝鏈濂藉湪寮曠敤鍒漢浠g爜鐨勫湴鏂瑰姞涓浜涘皬灝忕殑娉ㄨВ錛岃繖鏍風敤涓嶄簡澶氬皯鏃墮棿錛岃屼笖瀵逛綘錛屽鍘熶綔鑰呴兘鏈夊ソ澶刕_^銆?br>






涓嶈繃鍦ㄥ畬鎴愮鍙d笂鎴戣繕鏄病鏈夋垚涓烘嬁鏉ヤ富涔夎咃紝榪樻槸鑷繁灝佽浜嗗畬鎴愮鍙g殑鎿嶄綔錛屽師鍥犳壘鍒扮殑婧愪唬鐮佷唬鐮佸皝瑁呯殑鎺ュ彛鍑芥暟鎴戞庝箞鐪嬫庝箞瑙夊緱鍒壄錛屾墍浠ユ渶鍚庤繕鏄嚜宸卞皝瑁呬簡涓涓畬鎴愮鍙o紝鏈夊叴瓚g殑鍙互鍘葷湅鎴戠殑婧愪唬鐮侊紝閲岄潰鏈夊緢璇︾粏鐨勬敞瑙c傝屼笖灝辨垜鐪嬫潵錛岃鎷挎垜灝佽鐨勫畬鎴愮鍙g被浣跨敤璧鋒潵榪樻槸寰堢畝鍗曠殑銆備嬌鐢ㄧ殑鏃跺欙紝鍙緇ф壙鎴戠殑CIOCP錛岀劧鍚庯紝鏍規嵁闇瑕佽鐩?涓櫄鍑芥暟錛圤nAccept錛孫nRead錛孫nClose錛夊氨鍙互浜嗭紝鏈澶氭槸鍦ㄨ繛鎺ュ嚱鏁伴噷錛岄渶瑕佺敤涓涓嚱鏁板幓璁劇疆涓涓嬪畬鎴愮鍙d俊鎭傚綋鐒訛紝鎴戝皝瑁呯殑綾葷◢寰畝鍗曚簡涓浜涳紝濡傛灉瑕佹嬁鏉ュ搷搴斿ぇ瑙勬ā榪炴帴錛岃繕鏄瓨鍦ㄥ緢澶氱殑闂錛屼絾鏄鏋滃彧鏄拡瀵瑰皯閲忚繛鎺ワ紝榪樻槸鍙互搴斾粯鐨勩?br>






瀵逛簬瀹㈡埛绔殑I/O妯″瀷錛屾垜灝辨病鏈夐偅涔堢敤蹇冪殑鍘誨鎵句粈涔堝ソ鐨勮В鍐蟲柟妗堬紝閲囩敤浜嗕竴涓渶綆鍗曠殑錛屾渶鍘熷鐨勯樆濉炵嚎紼嬬殑鏂規硶鍋氥傚師鐞嗗緢綆鍗曪細鍒涘緩涓涓猻ockt錛屾妸socket璁劇疆涓洪樆濉烇紝榪炴帴鏈嶅姟鍣ㄦ垚鍔熷悗錛屽惎鍔ㄤ竴涓嚎紼嬶紝鍦ㄧ嚎紼嬮噷闈㈢敤recv()絳夊緟鏈嶅姟鍣ㄥ彂榪囨潵鐨勬秷鎭傚湪鎴戠殑浠g爜閲岋紝涔熸槸鎶婇樆濉炵嚎紼嬬殑鏂規硶灝佽鎴愪竴涓被錛屽湪浣跨敤鐨勬椂鍊欙紝鍏堢戶鎵縏ClientSocket錛岀劧鍚庤鐩栵紙閲嶈澆錛夐噷闈㈢殑OnRead()鍑芥暟錛屽茍鍦ㄩ噷闈㈠啓鍏ヤ竴浜涘鐞嗘敹鍒版暟鎹悗鐨勬搷浣滀唬鐮併傚湪鐢ㄧ殑鏃跺欙紝鍙connect鎴愬姛錛岀郴緇熷氨浼氳嚜鍔ㄥ惎鍔ㄤ竴涓帴鏀剁嚎紼嬶紝涓鏃︽湁鏁版嵁灝辮Е鍙戝垰鎵嶈鐩栫殑OnRead鍑芥暟銆傝繖涓被鎴戜篃涓嶆槸瀹屽叏鐩存帴鍐欑殑錛屽湪閲岄潰浣跨敤浜嗗埆浜虹殑涓浜涗唬鐮侊紝涓昏鏄姣忎釜綾婚兘鑳芥妸綰跨▼灝佽璧鋒潵錛岃繖鏍峰湪鍒涘緩涓嶅悓鐨勭被鐨勫疄浣撶殑鏃跺欙紝姣忎釜綾葷殑瀹炰綋鑷繁閮戒細鏈変竴涓崟鐙殑鏁版嵁鎺ユ敹綰跨▼銆?br>


褰撶劧闄や簡闃誨綰跨▼鐨勬柟娉曪紝姣旇緝甯哥敤鐨勮繕鏈夊氨鏄敤娑堟伅浜嬩歡鐨勬柟娉曟敹鍙栨暟鎹簡銆傛垜鍒氬紑濮嬬殑鏃跺欙紝涔熸槸閲囩敤榪欎釜鏂規硶錛堜互鍓嶇敤榪嘵_^錛夛紝浣嗘槸鍚庢潵鍙戠幇涓嶅お濂藉皝瑁咃紝鏈鍚庨噰鐢ㄩ樆濉炵嚎紼嬬殑鏂規硶錛岃繖鏍峰仛榪樻湁涓涓ソ澶勫彲浠ヨ鎴戠殑浠g爜鐪嬭搗鏉ユ洿鍔犺垝鏈嶄竴浜涖備笉榪囧氨鎴戝垎鏋愩婅埅嫻蜂笘綰嬪鎴風閲囩敤鐨勬槸娑堟伅浜嬩歡鐨処/O妯″瀷銆傚叾瀹冪殑緗戠粶娓告垙灝變笉澶竻妤氫簡錛屾垜鎯充篃搴旇鏄噰鐢ㄦ秷鎭簨浠舵柟寮忕殑鍚с傘?br>


   鎴戣寰楀湪gameres涓婄湅鍒拌繃鏌愪漢鍐欑殑涓綃囧叧浜庡畬鎴愮鍙g殑絎旇錛屼粬鍦ㄧ瘒鏈粨鏉熺殑鏃跺欙紝鎻愬嚭涓涓濊冮錛氭垜浠湪瀛︿範瀹屾垚绔彛鐨勬椂鍊欙紝閮界煡閬撳畠鏄敤浜巗erver绔殑鎿嶄綔錛岃屼笖寰堝鏂囩珷涔熸槸榪欐牱鍐欑殑錛屼絾鏄笉鐭ラ亾鏈夋病鏈夎冭檻榪囷紝鐢ㄥ畬鎴愮鍙e仛瀹㈡埛绔潵浣跨敤錛?br>


   鍏跺疄榪欎釜闂寰堝ソ鍥炵瓟錛岀瓟妗堟槸OK銆傛嬁IOCP鍋氬鎴風涔熸槸鍙鐨勶紝灝變互灝佽鐨処OCP涓轟緥錛屽彧瑕佸湪緇ф壙鍘熸潵鐨凜IOCP綾葷殑鍩虹涓婏紝鍐嶅啓涓涓狢onnect錛坈har * ip, int port錛夌殑鍑芥暟錛屽氨鍙互瀹炵幇瀹㈡埛绔殑瑕佹眰浜嗐?br>
  1. bool CIOCPClient::Connect(char *ip, int port)   
  2. {   
  3.         //  榪炴帴鏈嶅姟鍣?  
  4.   
  5.     if (!bInit)   
  6.   
  7.         if (!Init())   
  8.   
  9.             return false;   
  10.   
  11.     //  鍒濆鍖栬繛鎺ocket   
  12.     SOCKET m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);   
  13.   
  14.     if (m_socket == SOCKET_ERROR)   
  15.         return false;   
  16.   
  17.     // 濉啓鏈嶅姟鍣ㄥ湴鍧淇℃伅   
  18.   
  19.     sockaddr_in ClientAddr;   
  20.   
  21.     ClientAddr.sin_family = AF_INET;   
  22.   
  23.     ClientAddr.sin_port = htons(port);       
  24.   
  25.     ClientAddr.sin_addr.s_addr = inet_addr(ip);   
  26.     // 緇戝畾鐩戝惉绔彛   
  27.     bind(m_socket, (SOCKADDR *)&ClientAddr, sizeof(ClientAddr));   
  28.   
  29.     if (connect(m_socket, (SOCKADDR *)&ClientAddr, sizeof(ClientAddr)) == SOCKET_ERROR)   
  30.   
  31.         return false;   
  32.     this->m_workThread = true;   
  33.   
  34.   
  35.   
  36.     g_hwThread = CreateThread(NULL, 0, WorkThread, (LPVOID)this, 0, &m_wthreadID);  //  鍒涘緩宸ヤ綔綰跨▼錛岀敤鏉ュ鐞嗗畬鎴愮鍙f秷鎭殑   
  37.     this->SetIoCompletionPort(m_socket, NULL);  //  璁劇疆瀹屾垚绔彛鐩戝惉鐨剆ocket   
  38.     return true;   
  39.   
  40. }   

鍓嶉潰涓孌墊槸鐢ㄦ潵榪炴帴鏈嶅姟鍣紝鎵鏈夌殑瀹㈡埛绔▼搴忛兘鏄榪欐牱鍋氱殑錛屽綋榪炴帴鎴愬姛鍚庯紝m_socket灝辨槸鎴戜滑鎯寵鐨勭敤浜庝笌鏈嶅姟鍣ㄧ閫氳鐨剆ocket錛岀劧鍚庯紝鎴戜滑鍚姩宸ヤ綔綰跨▼錛屽茍浣跨敤SetIoCompletionPort鏉ヨ緗畬鎴愮鍙g洃鍚殑socket銆傚彧瑕佸湪鍘熸潵鐨勫熀紜涓婂鍔犱竴涓嚱鏁幫紝灝卞彲浠ユ妸鐢ㄤ簬鏈嶅姟鍣ㄧ殑ICOP鍙樻垚鐢ㄤ簬瀹㈡埛绔殑IOCP銆?br>


   鍦ㄦ敹鍒扮綉緇滄暟鎹互鍚庯紝涓嬩竴姝ュ氨鏄牴鎹渶瑕侊紝鎶婃敹鍒扮殑緗戠粶鏁版嵁鍖呰漿鍙樹負娓告垙娑堟伅鏁版嵁鍖呫傚湪杞崲涔嬪墠錛岄鍏堟槸瑕佷粠鏀跺埌鐨勭綉緇滄暟鎹噷闈㈡彁鍙栧嚭鏈夋晥鐨勬秷鎭傝繖閲屼負浠涔堣鏄鎻愬彇鏈夋晥閮ㄥ垎錛熷叾涓昏鍘熷洜鏄紝鎴戜滑鍒涘緩鐨勬父鎴忔秷鎭暟鎹紝鍦ㄨ繘琛岀綉緇滀紶杈撶殑鏃跺欙紝涓嶆槸浠ユ秷鎭殑闀垮害鏉ヤ紶鐨勶紝鑰屾槸鏍規嵁緋葷粺鍦ㄦ帴鏀跺埌鍙戦佹暟鎹姹傜殑鏃跺欙紝鏍規嵁瀹為檯鎯呭喌鏉ュ彂閫佺殑銆備緥濡傛垜榪欓噷鏈変竴鏉″緢闀跨殑娓告垙娑堟伅錛屾湁3k錛屼絾鏄郴緇熶竴嬈″彧鑳藉彂閫?k鐨勬暟鎹紝鎵浠ワ紝鎴戜滑鐨勬父鎴忔秷鎭紝鍙兘鎶婃垜浠殑娓告垙娑堟伅鍒嗕負3涓寘錛屽垎3嬈″彂閫侊紝榪欐牱鍦ㄦ垜浠帴鏀舵秷鎭殑鏃跺欙紝灝變細瑙﹀彂3嬈nRead錛岃岃繖3嬈nRead鏀跺埌鐨勬暟鎹兘涓嶆槸涓嬈″畬鏁寸殑娓告垙娑堟伅銆傛墍浠ワ紝鎴戜滑鍦ㄦ敹鍒扮綉緇滄暟鎹悗錛岃鍏堝拰涓婁竴嬈℃敹鍒扮殑緗戠粶鏁版嵁榪涜鍚堝茍錛岀劧鍚庡啀鍦ㄩ噷闈㈡彁鍙栧嚭鏈夋晥鐨勬父鎴忔秷鎭紝騫跺湪鎻愬彇鍚庯紝鎶婂凡緇忔彁鍙栫殑閮ㄥ垎鍒犻櫎銆傛垜鍦ㄨ繖閲屾妸榪欎竴姝ユ搷浣滃皝瑁呭埌涓涓被閲孋BuftoMsg銆傝繖閲岄『渚胯鏄庝竴涓嬶細涓鏉℃父鎴忔秷鎭殑緗戠粶鏁版嵁鍖呮槸浠?x00EEEE(16榪涘埗)涓虹粨鏉熸爣璁幫紙銆婅埅嫻蜂笘綰嬬殑鍋氭硶錛夈?br>
  1. struct TMessage   
  2.   
  3. {   
  4.   
  5.     char * p;       //  娑堟伅澶存墍鍦ㄧ殑浣嶇疆   
  6.   
  7.   
  8.   
  9.     long len;       //  鏁翠釜娑堟伅鐨勯暱搴?  
  10.   
  11.   
  12.   
  13. };   
  14.   
  15.   
  16.   
  17.   
  18.     
  19.   
  20.   
  21. class CBuftoMsg   
  22.   
  23.   
  24.   
  25. {   
  26.   
  27.   
  28.   
  29. protected:   
  30.   
  31.   
  32.   
  33.     char msgbuf[BUF_LEN];      
  34.   
  35.   
  36.   
  37.     char * buf_end;   
  38.   
  39.   
  40.   
  41.     char * buf_begin;   
  42.   
  43.   
  44.   
  45.     int buf_len;   
  46.   
  47.   
  48.   
  49. public:   
  50.   
  51.   
  52.   
  53.     CBuftoMsg(void);   
  54.   
  55.   
  56.   
  57.     TMessage getMessage(void);   
  58.   
  59.   
  60.   
  61.     void cleanup_buf(void);   
  62.   
  63.   
  64.   
  65.     bool AddMsgBuf(const char *, int);   
  66.   
  67.   
  68.   
  69.     int tag;   
  70.   
  71.   
  72.   
  73. };   
  74.   
  75.   
  76.   
  77.   
  78.     
  79.   
  80.   
  81. CBuftoMsg::CBuftoMsg(void)   
  82.   
  83.   
  84.   
  85. {   
  86.   
  87.   
  88.   
  89.     buf_begin = msgbuf;   
  90.   
  91.   
  92.   
  93.     buf_end = msgbuf;   
  94.   
  95.   
  96.   
  97.     buf_len = 0;   
  98.   
  99.   
  100.   
  101. }   
  102.   
  103.   
  104.   
  105.   
  106.     
  107.   
  108.   
  109. TMessage CBuftoMsg::getMessage()   
  110.   
  111.   
  112.   
  113. {   
  114.   
  115.   
  116.   
  117.     char * p    = buf_begin;   
  118.   
  119.   
  120.   
  121.     TMessage result;   
  122.   
  123.   
  124.   
  125.     result.len  = 0;   
  126.   
  127.   
  128.   
  129.     result.p    = NULL;   
  130.   
  131.   
  132.   
  133.     while(p <= buf_begin + buf_len - 2)   
  134.   
  135.   
  136.   
  137.     {   
  138.   
  139.   
  140.   
  141.         if ( *p == 0x00)   
  142.   
  143.   
  144.   
  145.         {   
  146.   
  147.   
  148.   
  149.             const static char ce = 0xEE;   
  150.   
  151.   
  152.   
  153.             if (*(p + 1) == ce)   
  154.   
  155.   
  156.   
  157.                 if(*(p + 2) == ce)   
  158.   
  159.   
  160.   
  161.                 {   
  162.   
  163.   
  164.   
  165.                     //  姣忔潯娑堟伅閮芥槸浠?nbsp;00 EE EE 涓虹粨鏉熸爣蹇?  
  166.   
  167.   
  168.   
  169.                     result.p    = buf_begin;   
  170.   
  171.   
  172.   
  173.                     result.len  = p - buf_begin + 3;   
  174.   
  175.   
  176.   
  177.                     buf_begin   =  p + 3;   
  178.   
  179.   
  180.   
  181.                     buf_end     = buf_begin + buf_len;   
  182.   
  183.   
  184.   
  185.                     buf_len -= result.len;   
  186.   
  187.   
  188.   
  189.                     break;   
  190.   
  191.   
  192.   
  193.                 }   
  194.   
  195.   
  196.   
  197.         }   
  198.   
  199.   
  200.   
  201.         p++;   
  202.   
  203.   
  204.   
  205.     }   
  206.   
  207.   
  208.   
  209.     return result;   
  210.   
  211.   
  212.   
  213. }   
  214.   
  215.   
  216.   
  217.   
  218.     
  219.   
  220.   
  221. void CBuftoMsg::cleanup_buf()   
  222.   
  223.   
  224.   
  225. {   
  226.   
  227.   
  228.   
  229.     if (buf_len < BUF_LEN)   
  230.   
  231.   
  232.   
  233.     {   
  234.   
  235.   
  236.   
  237.         if (buf_len == 0)   
  238.   
  239.   
  240.   
  241.         {   
  242.   
  243.   
  244.   
  245.             buf_begin   = msgbuf;   
  246.   
  247.   
  248.   
  249.             buf_end     = msgbuf;   
  250.   
  251.   
  252.   
  253.         }   
  254.   
  255.   
  256.   
  257.         else  
  258.   
  259.   
  260.   
  261.         {   
  262.   
  263.   
  264.   
  265.             memmove(msgbuf, buf_end - buf_len, buf_len);   
  266.   
  267.   
  268.   
  269.             buf_begin = msgbuf;   
  270.   
  271.   
  272.   
  273.             buf_end = buf_end - buf_len;   
  274.   
  275.         }   
  276.   
  277.   
  278.     }   
  279.   
  280.     else  
  281.   
  282.     {   
  283.   
  284.         //  鍔犲叆緙撳啿鍖虹殑鏁版嵁榪囧錛岃鎶涘純鍘熸潵鐨勫唴瀹?  
  285.   
  286.         buf_begin   = msgbuf;   
  287.   
  288.         buf_end     = msgbuf;   
  289.   
  290.         buf_len     = 0;   
  291.   
  292.     }   
  293.   
  294. }   
  295.   
  296. bool CBuftoMsg::AddMsgBuf(const char * buf, int len)   
  297. {   
  298.   
  299.     if (len < 1)   
  300.   
  301.         return false;   
  302.   
  303.     bool result = true;   
  304.   
  305.     buf_len += len;   
  306.   
  307.     if (buf_len >= BUF_LEN)     //  濡傛灉緙撳啿鍖鴻婊′簡鍒欑洿鎺ユ妸鍘熸潵鐨勭紦鍐插尯娓呯┖鍐嶉噸鏂板鍒舵暟鎹?  
  308.     {   
  309.         this->cleanup_buf();       
  310.         result = false;   
  311.   
  312.     }   
  313.   
  314.     memcpy(buf_begin, buf, len);   
  315.   
  316.     return result;   
  317.   
  318. }   
  319.   


鎴戝湪榪欓噷鎶?CBuftoMsg 鐨勪唬鐮佽創鍑烘潵錛屼富瑕佹槸鍥犱負錛屾垜鍦ㄥ啓鏈枃鐨勬椂鍊欙紝鍙戠幇涓涓儕澶╁姩鍦扮殑bug錛屾湁鍏磋叮鐨勮鑰呭彲浠ヨ嚜宸卞幓鎵句竴涓嬨備笉榪囦竴寮濮嬪啓浠g爜鐨勬椂鍊欙紝榪樹笉鏄繖鏍風殑錛屽綋鍒濈殑浠g爜bug姣旇繖涓繕瑕佸錛岄棶棰樿繕瑕佷弗閲嶏紝涓ラ噸鍒扮粡甯歌鏈嶅姟鍣ㄧ▼搴忚帿鍚嶅叾濡欑殑宕╂簝錛岃屼笖榪欎釜闂錛屼竴鐩村埌5鏈堜喚錛岀郴緇熷湪榪涜闆嗘垚嫻嬭瘯鐨勬椂鍊欐墠鍙戠幇騫惰В鍐籌紙榪樻病鏈夊交搴曡В鍐籌紝鑷沖皯鐩墠鎴戣繕鍙戠幇浜哹ug錛岋級錛屼互鍓嶄竴鐩撮兘娌℃湁鎬庝箞娉ㄦ剰鍒拌繖涓棶棰橈紝鑰屼笖鎴戜滑榪樻妸鍥犱負榪欎釜bug閫犳垚鐨勯棶棰橈紝褰掔粨鍒扮嚎紼嬬殑浜掓枼涓婂幓^_^!







鎴戠殑鐧婚檰鏈嶅姟鍣紝闄や簡鍩烘湰鐨勫鐞嗙綉緇滄暟鎹寘浠ュ錛岃繕璐熻矗鐜╁緋葷粺鐨勭櫥闄嗛獙璇侊紝榪欓儴鍒嗕笢瑗夸笉鏄緢澶嶆潅錛屽湪鎴戠殑紼嬪簭閲岋紝鍙槸綆鍗曠殑浠巌ni鏂囦歡閲岃鍙栫帺瀹剁殑淇℃伅鑰屽凡錛屾湁鍏磋叮鐨勮嚜宸卞幓鐪嬫垜鐨勪唬鐮侊紙涓嶈繃榪欓儴鍒嗚繙榪樻病鏈夌湡姝g殑瀹屽杽錛屽瓨鍦ㄥ緢澶氶棶棰橈級銆?br>






闄や簡鐧婚檰楠岃瘉浠ュ錛屽湪鐧婚檰紼嬪簭榪樿礋璐h繘琛屾秷鎭漿鍙戯紝灝辨槸鎶婂鎴風鐨勬秷鎭垎鍒彂閫佸埌涓嶅悓鐨勬湇鍔″櫒銆傚鏋滃綋鍒濊璁$殑鏄竴涓昏緫鏈嶅姟鍣紝榪欎釜鍔熻兘灝卞彲浠ョ畝鍗曞緢澶氾紝鍙鍙戦佸埌涓涓湇鍔″櫒閲屽氨鍙互浜嗐傜幇鍦ㄧ殑瑕佸彂鍒?涓湇鍔″櫒錛屾墍浠ヨ繕闇瑕佸鏀跺埌鐨勬父鎴忔秷鎭繘琛屽垎綾匯備負浜嗘柟渚匡紝鎴戝鍘熸潵瀹氫箟娑堟伅鐨処D榪涜浜嗗垎綾伙紝鎵浠ワ紝鍦℅ameMessageID.h鏂囦歡閲屽畾涔夌殑娓告垙娑堟伅瀵瑰簲鐨処D緙栧彿涓嶆槸欏哄簭緙栨帓鐨勩備笉榪囦篃鍥犱負榪欐牱錛屽湪鐜板湪鐪嬫潵錛岃繖鏍風殑璁捐錛屾湁涓浜涗笉澶ソ銆傚湪鏁翠釜緋葷粺閲岋紝瀛樺湪鏈?涓富浣擄紝浠栦滑涔嬮棿浜掔浉鍙戦侊紝灝辯敤浜?2緇勭殑鏁版嵁錛屼負浜嗘柟渚胯綆楋紝鎴戞妸涓涓彉閲忕殑鑼冨洿鍒嗕負16涓笉鍚岀殑鍖哄煙錛岃繖鏍鋒瘡涓尯鍩熷彧鏈?6涓煎彲浠ョ敤錛堟垜榪欓噷鏄敤char綾誨瀷256/16=16錛夈傚湪鍔犱笂鐢ㄥ彟澶栦竴涓彉閲忚〃紺洪昏緫涓婁笂鐨勫垎綾伙紙鐩墠鎸夌収鍔熻兘鍒嗕簡12緇勶紝鏈夌櫥闄嗐佽錘鏄撱侀摱琛屻佽埞鍘傜瓑錛夎繖鏍峰浜庤錘鏄撹繖涓被鍨嬬殑娓告垙娑堟伅錛屼粠瀹㈡埛绔彂閫佸埌閫昏緫鏈嶅姟鍣ㄤ笂錛屽彧鑳芥湁16涓彲鑳芥э紝濡傛灉瑕佸彂閫佹洿澶氭秷鎭紝鍙兘瑕佸鍔犲彟澶栦竴涓昏緫鍒嗙被錛氳錘鏄?^_^!褰撳垵榪欐牱鐨勮璁″彧鏄兂綆鍖栦竴涓嬬郴緇熺殑澶勭悊榪囩▼錛屼笉榪囧嵈閫犳垚浜嗙郴緇熺殑鎵╁厖鍥伴毦錛岃瑙e喅涔熶笉鏄病鏈夊姙娉曪紝鎶婄被鍨嬪垎綾葷殑鍙橀噺鐢眂har綾誨瀷錛屾敼涓篿nt綾誨瀷錛岃繖鏍峰涓涓彉閲忓垎鍖猴紝鍦ㄨ寖鍥翠笂浼氭寰堝錛岃屼笖涓嶄細閫犳垚閫昏緫鍒嗙被涓婄殑鍥版壈錛屼絾鏄紝榪欐牱瀛樺湪涓涓紛绔氨鏄氨鏄瘡鏉$綉緇滄秷鎭暟鎹寘鐨勯暱搴﹀鍔犱簡涓鐐圭偣銆備笉瑕佸皬鐪嬭繖涓涓瓧鑺傜殑鍙橀噺錛岀幇鍦ㄨ璁$殑涓鏉℃父鎴忔秷鎭ご鐨勯暱搴︽槸10涓瓧鑺傦紝濡傛灉鎶奵har鏀逛負int錛屾棤褰腑灝卞鍔犱簡3涓瓧鑺傦紝鍦ㄥ拰鍘熸潵鐨勬瘮杈冿紝榪欐牱姣忔潯娑堟伅鍦ㄦ秷鎭ご閮ㄥ垎錛屽氨澶氬嚭23錛咃紝涔熷氨鏄垜浠?00M鐨勭綉緇滅幇鍦ㄥ彧鑳藉埄鐢?7錛呰屽凡銆?br>


   ^_^鍛靛懙鐪嬪嚭浠涔堥棶棰樻病鏈夛紵



   娌℃湁錛岄偅鎴戝憡璇変綘錛屾湁涓涓蹇佃鍋鋒崲浜嗭紝娑堟伅澶寸殑鏁版嵁涓嶇瓑浜庢暣鏉℃父鎴忕殑娑堟伅鏁版嵁錛屾墍浠ワ紝娑堟伅澶撮儴鍒嗚櫧鐒跺鍑轟簡23錛咃紝浣嗘槸鏁存潯娓告垙娑堟伅騫朵笉浼氬鍔犺繖涔堝錛屾渶澶氬鍔?7錛咃紝鏈灝戝簲璇ヤ笉浼氭搷浣?錛呫傚鉤鍧囪搗鏉ワ紝搴旇鍦?0錛呭乏鍙籌紙娓告垙娑堟伅閲岋紝寰堝娑堟伅鐨勫疄闄呴儴鍒嗗彲鑳藉氨涓涓猧nt鍙橀噺鑰屽凡錛夈備笉榪囷紝灝辯畻鏄?0錛咃紝涔熷崰鐢ㄤ簡甯﹀銆?br>


   ^_^鍛靛懙榪樼湅鍑轟粈涔堥棶棰樻病鏈夛紵



   ^_^鍏堝幓璇諱竴涓嬫垜鐨勪唬鐮侊紝鍐嶅洖澶寸湅鐪嬶紝涓婇潰鐨勮榪拌繕鏈変粈涔堥棶棰樸?br>


   瀹為檯涓婏紝姣忔潯娓告垙娑堟伅鐢憋細娑堟伅澶淬佹秷鎭疄浣撱佺粨鏉熸爣璁扮粍鎴愶紝鍏朵腑鍥哄畾鐨勬槸娑堟伅澶村拰緇撴潫鏍囪錛屾墍浠ワ紝瀹為檯涓婁竴鏉″疄闄呬笂娓告垙娑堟伅鐨勬暟鎹寘錛屾渶澶氭瘮鍘熸潵鐨勫15錛咃紝騫沖潎璧鋒潵錛屽簲璇ユ槸8錛咃綖10錛呯殑澧為噺鑰屽紓銆?br>


   濂戒簡錛屼笉鍦ㄨ繖涓綆楃粏鑺備笂鎵eお澶氱簿鍔涗簡銆傝瑙e喅榪欎釜闂錛岃涔堟槸澧炲姞緗戠粶鏁版嵁鐨勫彂閫侀噺錛岃涔堬紝灝辨槸璋冩暣娓告垙緇撴瀯錛屼緥濡傦紝鎶婁袱涓姛鑳芥湇鍔″櫒鍚堝茍涓轟竴涓湇鍔″櫒錛岃繖鏍鋒湇鍔″櫒鐨勫璞″疄浣撳氨鐢卞師鏉ョ殑4涓垎涓?涓紝涓や袱闂寸殑閫氳錛屽氨鐢卞師鏉ョ殑12璺緝鍑忎負6璺紝鍙鍒?涓尯鍩熷氨ok浜嗐傝繖鏍鋒瘡涓昏緫鍒嗙被灝辨湁32鏉℃父鎴忔秷鎭彲浠ヤ嬌鐢ㄣ傚綋鐒訛紝濡傛灉榪涗竴姝ュ悎騫舵湇鍔″櫒錛屾妸鏈嶅姟鍣ㄧ閮藉悎騫跺埌涓涓▼搴忥紝閭e氨涓嶇敤鍒嗙被浜哵_^!

   鍦ㄧ櫥闄嗘湇鍔″櫒鐩綍涓嬶紝榪樻湁涓緇刴ynet.h/mynet.cpp鐨勬枃浠訛紝鏄垜褰撳垵涓烘湇鍔″櫒绔璁$殑鍑芥暟錛屽皝瑁呯殑鏄秷鎭簨浠剁綉緇滃搷搴旀ā鍨嬨傚彧涓嶈繃灝佽寰椾笉鏄庝箞濂斤紝琚姏寮冧笉鐢ㄤ簡錛屾湁鍏磋叮鐨勫彲浠ュ幓鐪嬬湅錛屽弽姝f垜鏄笉鎺ㄨ崘鐪嬬殑銆傚彧涓嶈繃鏄湪榪欓噷璇存槑涓涓嬫暣涓伐紼嬬洰褰曠殑緇撴瀯鑰屽凡銆?br>


鏉庨槼 2009-03-03 20:10 鍙戣〃璇勮
]]>
CSV綆浠?/title><link>http://m.shnenglu.com/deane/articles/51992.html</link><dc:creator>鏉庨槼</dc:creator><author>鏉庨槼</author><pubDate>Tue, 03 Jun 2008 02:33:00 GMT</pubDate><guid>http://m.shnenglu.com/deane/articles/51992.html</guid><wfw:comment>http://m.shnenglu.com/deane/comments/51992.html</wfw:comment><comments>http://m.shnenglu.com/deane/articles/51992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/deane/comments/commentRss/51992.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/deane/services/trackbacks/51992.html</trackback:ping><description><![CDATA[<p><br> </p> <p>CSV鍏ㄧО Comma Separated values錛屾槸涓縐嶇敤鏉ュ瓨鍌ㄦ暟鎹殑綰枃鏈?br>鏂囦歡鏍煎紡錛岄氬父鐢ㄤ簬鐢靛瓙琛ㄦ牸鎴栨暟鎹簱杞歡銆傛湁綆鍗曟槗鐢紝鍗犵敤瀛樺偍瀛楄妭灝戠殑鐗圭偣銆?/p> <p>瑙勫垯</p> <p>0 寮澶存槸涓嶇暀絀猴紝浠ヨ涓哄崟浣嶃?br>1 鍙惈鎴栦笉鍚垪鍚嶏紝鍚垪鍚嶅垯灞呮枃浠剁涓琛屻?br>2 涓琛屾暟鎹笉鍨錛屾棤絀鴻銆?br>3 浠ュ崐瑙掔鍙鳳紙ASCII錛夛紝浣滃垎闅旂錛屽垪涓虹┖涔熻琛ㄨ揪鍏跺瓨鍦ㄣ?br>4 鍒楀唴瀹瑰瀛樺湪錛岋紝鍒欑敤""鍖呭惈璧鋒潵銆?br>5 鍒楀唴瀹瑰瀛樺湪""鍒欑敤""""鍖呭惈銆?br>6 鏂囦歡璇誨啓鏃跺紩鍙鳳紝閫楀彿鎿嶄綔瑙勫垯浜掗嗐?br>7 鍐呯爜鏍煎紡涓嶉檺錛屽彲涓篈SCII銆乁nicode鎴栬呭叾浠栥?br><br></p> <p>  XLS鏄疎xcel鐨勫師鐢熸牸寮忥紝浣嗘槸鍙互灝嗕箣杞瓨涓篶sv錛宑sv鐨勬牸寮忛潪甯哥畝鍗曪紝涓昏鏍煎紡灝辨槸鐢ㄩ楀彿闅斿紑姣忎釜鏁版嵁銆?br>鎵浠ワ紝榪欐槸涓涓緢涓嶉敊鐨勪笢瑗褲?br>絳栧垝鍙互鐢‥xcel緙栬緫鏂囨。錛岃漿瀛榗sv涔嬪悗錛屽氨鍙互鐢ㄤ簬紼嬪簭鐨勮鍙栥?br></p> <p><br>瑙佷笅渚嬶細<br></p> <p><1>. xls 鏂囨。錛?/p> <p><img height=251 alt="" src="http://m.shnenglu.com/images/cppblog_com/deane/as.jpg" width=537 border=0><br></p> <p><br><2>.csv鏂囨。錛?br></p> <p><img height=211 alt="" src="http://m.shnenglu.com/images/cppblog_com/deane/ad.jpg" width=437 border=0><br></p> <p><br>鐢ㄧ▼搴忚鍙栬繖涓猚sv鏂囨。錛屽緢easy浜嗭紒<br></p> <p><br> </p> <p> </p> <p> </p> <img src ="http://m.shnenglu.com/deane/aggbug/51992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/deane/" target="_blank">鏉庨槼</a> 2008-06-03 10:33 <a href="http://m.shnenglu.com/deane/articles/51992.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://m.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.ssc905.cn" target="_blank">亚洲国产精品一区二区久久hs</a>| <a href="http://www.kpqo.cn" target="_blank">久久久国产精华液</a>| <a href="http://www.mlbj.net.cn" target="_blank">色欲久久久天天天综合网</a>| <a href="http://www.shoucunshiyuan.cn" target="_blank">国产精品久久久久久久久软件 </a>| <a href="http://www.xiaoneiweb.cn" target="_blank">欧美大战日韩91综合一区婷婷久久青草</a>| <a href="http://www.city24.com.cn" target="_blank">精品久久一区二区</a>| <a href="http://www.aeuou.cn" target="_blank">色99久久久久高潮综合影院</a>| <a href="http://www.cad77.cn" target="_blank">亚洲国产精品无码久久久秋霞2 </a>| <a href="http://www.265z.cn" target="_blank">国内精品久久久久久久久电影网</a>| <a href="http://www.vcfh.cn" target="_blank">久久综合九色欧美综合狠狠</a>| <a href="http://www.xfidc.com.cn" target="_blank">亚洲午夜久久久久久噜噜噜</a>| <a href="http://www.hotdee.com.cn" target="_blank">国产精品天天影视久久综合网</a>| <a href="http://www.37eee.cn" target="_blank">久久久久97国产精华液好用吗</a>| <a href="http://www.ccka.cn" target="_blank">久久精品无码一区二区WWW</a>| <a href="http://www.tzzdj.cn" target="_blank">久久99国产精品久久99</a>| <a href="http://www.zaixianp29.cn" target="_blank">亚洲精品乱码久久久久久不卡</a>| <a href="http://www.413qq.cn" target="_blank">精品久久久无码人妻中文字幕豆芽 </a>| <a href="http://www.drxt.com.cn" target="_blank">久久se精品一区精品二区</a>| <a href="http://www.szcybj.cn" target="_blank">亚洲日本va午夜中文字幕久久</a>| <a href="http://www.xuanhaoma.com.cn" target="_blank">久久国产免费观看精品3</a>| <a href="http://www.sdlove.cn" target="_blank">中文字幕无码久久精品青草</a>| <a href="http://www.sijishi.cn" target="_blank">久久精品国产半推半就</a>| <a href="http://www.4o2ptp.cn" target="_blank">久久精品一区二区三区AV</a>| <a href="http://www.91pang.cn" target="_blank">久久无码国产</a>| <a href="http://www.chechuai.cn" target="_blank">精品国产一区二区三区久久蜜臀</a>| <a href="http://www.lakesys.com.cn" target="_blank">青青草原精品99久久精品66</a>| <a href="http://www.aion999.cn" target="_blank">亚洲国产成人精品无码久久久久久综合</a>| <a href="http://www.sina458.cn" target="_blank">精品国产乱码久久久久久郑州公司</a>| <a href="http://www.93jk.cn" target="_blank">久久久久亚洲av成人无码电影 </a>| <a href="http://www.0898qc.cn" target="_blank">中文字幕久久亚洲一区</a>| <a href="http://www.gegqmpvka.cn" target="_blank">91精品国产91久久</a>| <a href="http://www.uxiw.cn" target="_blank">久久久精品一区二区三区</a>| <a href="http://www.wzyuan25.cn" target="_blank">久久久久人妻一区精品色</a>| <a href="http://www.zhengyuezp.cn" target="_blank">国内精品九九久久精品</a>| <a href="http://www.hrbtwlh.cn" target="_blank">久久成人小视频</a>| <a href="http://www.gsm1.com.cn" target="_blank">2021国产精品久久精品</a>| <a href="http://www.dpww.net.cn" target="_blank">性做久久久久久免费观看</a>| <a href="http://www.hnwjzd.com.cn" target="_blank">久久精品国产99国产精品</a>| <a href="http://www.oxygeniclife.com.cn" target="_blank">久久99精品久久久久久9蜜桃</a>| <a href="http://www.liuzirui597.cn" target="_blank">国产精品99久久久久久www</a>| <a href="http://www.fuxingjidian.cn" target="_blank">久久国产乱子伦精品免费强</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>