锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 娉ㄦ剰鍦╓insock 2鍙戝竷涔嬪悗錛岄噸鍙營/O浠嶅彲鍦╓indows NT鍜學indows 2000榪欎袱涓搷浣滅郴緇熶腑錛岄殢R e a d F i l e鍜學r i t e F i l e涓や釜鍑芥暟浣跨敤銆備絾鏄紝Windows 95鍜學indows 98鍧囦笉鍏峰榪欎竴鍔熻兘銆傝冭檻鍒板簲鐢ㄧ▼搴忕殑璺ㄥ鉤鍙板吋瀹歸棶棰橈紝鍚屾椂鑰冭檻鍒版ц兘鏂歸潰鐨勫洜绱狅紝搴斿敖閲忛伩鍏嶄嬌鐢╓i n 3 2鐨凴 e a d F i l e鍜學r i t e F i l e鍑芥暟錛屽垎鍒崲浠 S A R e c v鍜學 S A S e n d鍑芥暟銆傛湰鑺傚彧鎵撶畻璁茶堪閫氳繃鏂扮殑Winsock 2鍑芥暟錛屾潵浣跨敤閲嶅彔I/O妯″瀷銆?br />瑕佹兂鍦ㄤ竴涓鎺ュ瓧涓婁嬌鐢ㄩ噸鍙營 / O妯″瀷錛岄鍏堝繀欏諱嬌鐢╓ S A _ F L A G _ O V E R L A P P E D榪欎釜鏍囧織錛屽垱寤轟竴涓鎺ュ瓧銆傚涓嬫墍紺猴細 聽 s = WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED); 聽typedef struct WSAOVERLAPPED 澶辮觸鍚庯紝鐢眑 p c b Tr a n s f e r鍙傛暟鎸囧悜鐨勫間笉浼氳繘琛屾洿鏂幫紝鑰屼笖鎴戜滑鐨勫簲鐢ㄧ▼搴忓簲璋冪敤W S A G e t L a s t E r r o r鍑芥暟錛岃皟鏌ュ埌搴曟槸浣曠鍘熷洜閫犳垚浜嗚皟鐢ㄥけ璐ャ?br />鍦ㄧ▼搴忔竻鍗? - 7涓紝鎴戜滑鍚戝ぇ瀹墮槓榪頒簡濡備綍緙栧埗涓涓畝鍗曠殑鏈嶅姟鍣ㄥ簲鐢紝浠ゅ叾鍦ㄤ竴涓鎺ュ瓧涓婂閲嶅彔I / O鎿嶄綔榪涜綆$悊錛岀▼搴忓畬鍏ㄥ埄鐢ㄤ簡鍓嶈堪鐨勪簨浠墮氱煡鏈哄埗銆傚璇ョ▼搴忛噰鐢ㄧ殑緙栫▼姝ラ鎬葷粨濡備笅錛?br />1) 鍒涘緩涓涓鎺ュ瓧錛屽紑濮嬪湪鎸囧畾鐨勭鍙d笂鐩戝惉榪炴帴璇鋒眰銆?br />2) 鎺ュ彈涓涓繘鍏ョ殑榪炴帴璇鋒眰銆?br />3) 涓烘帴鍙楃殑濂楁帴瀛楁柊寤轟竴涓猈 S A O V E R L A P P E D緇撴瀯錛屽茍涓鴻緇撴瀯鍒嗛厤涓涓簨浠跺璞″彞鏌勩?br />涔熷皢浜嬩歡瀵硅薄鍙ユ焺鍒嗛厤緇欎竴涓簨浠舵暟緇勶紝浠ヤ究紼嶅悗鐢盬 S AWa i t F o r M u l t i p l e E v e n t s鍑芥暟浣跨敤銆?br />4) 鍦ㄥ鎺ュ瓧涓婃姇閫掍竴涓紓姝 S A R e c v璇鋒眰錛屾寚瀹氬弬鏁頒負W S A O V E R L A P P E D緇撴瀯銆?br />娉ㄦ剰鍑芥暟閫氬父浼氫互澶辮觸鍛婄粓錛岃繑鍥濻 O C K E T _ E R R O R閿欒鐘舵乄 S A _ I O _ P E N D I N G錛圛/O鎿嶄綔灝氭湭瀹屾垚錛夈?br />5) 浣跨敤姝ラ3 )鐨勪簨浠舵暟緇勶紝璋冪敤W S AWa i t F o r M u l t i p l e E v e n t s鍑芥暟錛屽茍絳夊緟涓庨噸鍙犺皟鐢ㄥ叧鑱斿湪涓璧風殑浜嬩歡榪涘叆鈥滃凡浼犱俊鈥濈姸鎬侊紙鎹㈣█涔嬶紝絳夊緟閭d釜浜嬩歡鐨勨滆Е鍙戔濓級銆?br />6) WSAWa i t F o r M u l t i p l e E v e n t s鍑芥暟瀹屾垚鍚庯紝閽堝浜嬩歡鏁扮粍錛岃皟鐢╓ S A R e s e t E v e n t錛堥噸璁句簨浠訛級鍑芥暟錛屼粠鑰岄噸璁句簨浠跺璞★紝騫跺瀹屾垚鐨勯噸鍙犺姹傝繘琛屽鐞嗐?br />7) 浣跨敤W S A G e t O v e r l a p p e d R e s u l t鍑芥暟錛屽垽鏂噸鍙犺皟鐢ㄧ殑榪斿洖鐘舵佹槸浠涔堛?br />8) 鍦ㄥ鎺ュ瓧涓婃姇閫掑彟涓涓噸鍙燱 S A R e c v璇鋒眰銆?br />9) 閲嶅姝ラ5 ) ~ 8 )銆?br />榪欎釜渚嬪瓙鏋佹槗鎵╁睍錛屾彁渚涘澶氫釜濂楁帴瀛楃殑鏀寔銆傛柟娉曟槸灝嗕唬鐮佺殑閲嶅彔I / O澶勭悊閮ㄥ垎縐昏嚦涓涓嫭绔嬬殑綰跨▼鍐咃紝璁╀富搴旂敤紼嬪簭綰跨▼涓洪檮鍔犵殑榪炴帴璇鋒眰鎻愪緵鏈嶅姟銆?br />紼嬪簭娓呭崟8-7 閲囩敤浜嬩歡鏈哄埗鐨勭畝鍗曢噸鍙營 / O澶勭悊紺轟緥
鍦╓i n s o c k涓紝鐩告瘮鎴戜滑榪勪粖涓烘瑙i噴榪囩殑鍏朵粬鎵鏈塈 / O妯″瀷錛岄噸鍙營 / O錛圤verlapped I/O錛?br />妯″瀷浣垮簲鐢ㄧ▼搴忚兘杈懼埌鏇翠匠鐨勭郴緇熸ц兘銆傞噸鍙犳ā鍨嬬殑鍩烘湰璁捐鍘熺悊渚挎槸璁╁簲鐢ㄧ▼搴忎嬌鐢ㄤ竴涓噸鍙犵殑鏁版嵁緇撴瀯錛屼竴嬈℃姇閫掍竴涓垨澶氫釜Winsock I/O璇鋒眰銆傞拡瀵歸偅浜涙彁浜ょ殑璇鋒眰錛屽湪瀹冧滑瀹屾垚涔嬪悗錛屽簲鐢ㄧ▼搴忓彲涓哄畠浠彁渚涙湇鍔°傝妯″瀷閫傜敤浜庨櫎Windows CE涔嬪鐨勫悇縐峎i n d o w s騫沖彴銆?br />妯″瀷鐨勬諱綋璁捐浠i n 3 2閲嶅彔I / O鏈哄埗涓哄熀紜銆傞偅涓満鍒跺彲閫氳繃R e a d F i l e鍜學r i t e F i l e涓や釜鍑芥暟錛岄拡瀵硅澶囨墽琛孖 / O鎿嶄綔銆?br />鏈寮濮嬬殑鏃跺欙紝Wi n s o c k閲嶅彔I / O妯″瀷鍙兘搴旂敤浜嶹indows NT鎿嶄綔緋葷粺涓婅繍琛岀殑Wi n s o c k1 . 1搴旂敤紼嬪簭銆備綔涓哄簲鐢ㄧ▼搴忥紝瀹冨彲閽堝涓涓鎺ュ瓧鍙ユ焺錛岃皟鐢≧ e a d F i l e浠ュ強Wr i t e F i l e錛屽悓鏃舵寚瀹氫竴涓噸鍙犲紡緇撴瀯錛堢◢鍚庤榪幫級錛屼粠鑰屽埄鐢ㄨ繖涓ā鍨嬨傝嚜Winsock 2鍙戝竷寮濮嬶紝閲嶅彔I / O渚垮凡闆嗘垚鍒版柊鐨刉i n s o c k鍑芥暟涓紝姣斿W S A S e n d鍜學 S A R e c v銆傝繖鏍蜂竴鏉ワ紝閲嶅彔I / O妯″瀷渚胯兘閫傜敤浜庡畨瑁呬簡Winsock 2鐨勬墍鏈塛i n d o w s騫沖彴銆?/p>
聽 鍒涘緩濂楁帴瀛楃殑鏃跺欙紝鍋囧浣跨敤鐨勬槸s o c k e t鍑芥暟錛岃岄潪W S A S o c k e t鍑芥暟錛岄偅涔堜細榛樿璁劇疆W S A _ F L A G _ O V E R L A P P E D鏍囧織銆傛垚鍔熷緩濂戒竴涓鎺ュ瓧錛屽悓鏃跺皢鍏朵笌涓涓湰鍦版帴鍙g粦瀹氬埌涓璧峰悗錛屼究鍙紑濮嬭繘琛岄噸鍙營 / O 鎿嶄綔錛屾柟娉曟槸璋冪敤涓嬭堪鐨刉i n s o c k 鍑芥暟錛屽悓鏃舵寚瀹氫竴涓?br />W S A O V E R L A P P E D緇撴瀯錛堝彲閫夛級錛?br />鈻?W S A S e n d
鈻?W S A S e n d To
鈻?W S A R e c v
鈻?W S A R e c v F r o m
鈻?W S A I o c t l
鈻?A c c e p t E x
鈻?Tr n a s m i t F i l e
澶у鐜板湪鎴栬宸茬粡鐭ラ亾錛屽叾涓瘡涓嚱鏁伴兘涓庝竴涓鎺ュ瓧涓婃暟鎹殑鍙戦併佹暟鎹帴鏀朵互鍙婅繛鎺ョ殑鎺ュ彈鏈夊叧銆傚洜姝わ紝榪欎簺媧誨姩鍙兘浼氳姳鏋佸皯鐨勬椂闂存墠鑳藉畬鎴愩傝繖姝f槸姣忎釜鍑芥暟閮藉彲鎺ュ彈涓涓猈 S A O V E R L A P P E D緇撴瀯浣滀負鍙傛暟鐨勫師鍥犮傝嫢闅忎竴涓猈 S A O V E R L A P P E D緇撴瀯涓璧瘋皟鐢ㄨ繖浜涘嚱鏁幫紝鍑芥暟浼氱珛鍗沖畬鎴愬茍榪斿洖錛屾棤璁哄鎺ュ瓧鏄惁璁句負閿佸畾妯″紡錛堟湰绔犲紑澶村凡璇︾粏璁茶繃浜嗭級銆傚畠
浠緷璧栦簬W S A O V E R L A P P E D緇撴瀯鏉ヨ繑鍥炰竴涓狪 / O璇鋒眰鐨勮繑鍥炪?br />涓昏鏈変袱涓柟娉曞彲鐢ㄦ潵綆$悊涓涓噸鍙營 / O璇鋒眰鐨勫畬鎴愶細鎴戜滑鐨勫簲鐢ㄧ▼搴忓彲絳夊緟鈥滀簨浠跺璞¢氱煡鈥濓紝浜﹀彲閫氳繃鈥滃畬鎴愪緥紼嬧濓紝瀵瑰凡緇忓畬鎴愮殑璇鋒眰鍔犱互澶勭悊銆備笂闈㈠垪鍑虹殑鍑芥暟錛?A c c e p t E x闄ゅ錛夎繕鏈夊彟涓涓父鐢ㄧ殑鍙傛暟錛?br />l p C o m p l e t i o n R O U T I N E銆傝鍙傛暟鎸囧畾鐨勬槸涓涓彲閫夌殑鎸囬拡錛屾寚鍚戜竴涓畬鎴愪緥紼嬪嚱鏁幫紝鍦ㄩ噸鍙犺姹傚畬鎴愬悗璋冪敤銆傛帴涓嬪幓錛屾垜浠皢鎺㈣浜嬩歡閫氱煡鏂規硶銆傚湪鏈珷紼嶅悗錛岃繕浼氫粙緇嶅浣曚嬌鐢ㄥ彲閫夌殑瀹屾垚渚嬬▼錛屼唬鏇夸簨浠訛紝瀵瑰畬鎴愮殑閲嶅彔璇鋒眰鍔犱互澶勭悊銆?br />1. 浜嬩歡閫氱煡
閲嶅彔I / O鐨勪簨浠墮氱煡鏂規硶瑕佹眰灝哤i n 3 2浜嬩歡瀵硅薄涓嶹 S A O V E R L A P P E D緇撴瀯鍏寵仈鍦ㄤ竴璧楓傝嫢浣跨敤涓涓猈 S A O V E R L A P P E D緇撴瀯錛屽彂鍑哄儚W S A S e n d鍜學 S A R e c v榪欐牱鐨処 / O璋冪敤錛屽畠浠細绔嬪嵆榪斿洖銆?br />閫氬父錛屽ぇ瀹朵細鍙戠幇榪欎簺I / O 璋冪敤浼氫互澶辮觸鍛婄粓錛岃繑鍥濻 O C K E T _ E R R O R 銆備嬌鐢╓ S A G e t L a s t E r r o r鍑芥暟錛屼究鍙幏寰椾笌閿欒鐘舵佹湁鍏崇殑涓涓姤鍛娿傝繖涓敊璇姸鎬佹剰鍛崇潃I / O鎿嶄綔姝e湪榪涜銆傜◢鍚庣殑鏌愪釜鏃墮棿錛屾垜浠殑搴旂敤紼嬪簭闇瑕佺瓑鍊欎笌W S A O V E R L A P P E D緇撴瀯瀵瑰簲鐨勪簨浠跺璞★紝浜嗚В涓涓噸鍙營 / O璇風ず浣曟椂瀹屾垚銆俉 S A O V E R L A P P E D緇撴瀯鍦ㄤ竴涓噸鍙營 / O璇鋒眰鐨勫垵濮嬪寲錛屽強鍏跺悗緇殑瀹屾垚涔嬮棿錛屾彁渚涗簡涓縐嶆矡閫氭垨閫氫俊鏈哄埗銆備笅闈㈡槸榪欎釜緇撴瀯鐨勫畾涔夛細
聽{
聽聽DWORD聽Internal;
聽聽DWORD InternalHigh;
聽聽DWORD Offset;
聽聽DWORD OffsetHigh;
聽聽WSAEVENT hEvent;
聽}WSAOVERLAPPED,FAR *LPWSAOVERLPPED;
聽
鍏朵腑錛孖 n t e r n a l銆両 n t e r n a l H i g h銆丱 ff s e t鍜孫 ff s e t H i g h瀛楁鍧囩敱緋葷粺鍦ㄥ唴閮ㄤ嬌鐢紝涓嶅簲鐢卞簲鐢ㄧ▼搴忕洿鎺ヨ繘琛屽鐞嗘垨浣跨敤銆傝屽彟涓鏂歸潰錛?h E v e n t瀛楁鏈夌偣鍎跨壒孌婏紝瀹冨厑璁稿簲鐢ㄧ▼搴忓皢涓涓簨浠跺璞″彞鏌勫悓涓涓鎺ュ瓧鍏寵仈璧鋒潵銆傚ぇ瀹跺彲鑳戒細瑙夊緱濂囨紝濡備綍灝嗕竴涓簨浠跺璞″彞鏌勫垎閰嶇粰璇ュ瓧孌靛憿錛熸濡傛垜浠棭鍏堝湪W S A E v e n t S e l e c t妯″瀷涓榪扮殑閭f牱錛屽彲鐢╓ S A C r e a t e E v e n t鍑芥暟鏉ュ垱寤轟竴涓簨浠跺璞″彞鏌勩備竴鏃﹀垱寤哄ソ涓涓簨浠跺彞鏌勶紝綆鍗曞湴灝嗛噸鍙犵粨鏋勭殑h E v e n t瀛楁鍒嗛厤緇欎簨浠跺彞鏌勶紝鍐嶄嬌鐢ㄩ噸鍙犵粨鏋勶紝璋冪敤涓涓猈i n s o c k鍑芥暟鍗沖彲錛屾瘮濡俉 S A S e n d鎴朩 S A R e c v銆?br />涓涓噸鍙營 / O璇鋒眰鏈緇堝畬鎴愬悗錛屾垜浠殑搴旂敤紼嬪簭瑕佽礋璐e彇鍥為噸鍙營 / O鎿嶄綔鐨勭粨鏋溿備竴涓噸鍙犺姹傛搷浣滄渶緇堝畬鎴愪箣鍚庯紝鍦ㄤ簨浠墮氱煡鏂規硶涓紝 Wi n s o c k浼氭洿鏀逛笌涓涓猈 S A O V E R L A P P E D緇撴瀯瀵瑰簲鐨勪竴涓簨浠跺璞$殑浜嬩歡浼犱俊鐘舵侊紝灝嗗叾浠庘滄湭浼犱俊鈥濆彉鎴愨滃凡浼犱俊鈥濄傜敱浜庝竴涓簨浠跺璞″凡鍒嗛厤緇橶 S A O V E R L A P P E D緇撴瀯錛屾墍浠ュ彧闇綆鍗曞湴璋冪敤W S AWa i t F o r M u l t i p l e E v e n t s鍑芥暟錛屼粠鑰屽垽鏂嚭涓涓噸鍙營 / O璋冪敤鍦ㄤ粈涔堟椂鍊欏畬鎴愩傝鍑芥暟宸插湪鎴戜滑鍓嶉潰璁茶堪WSAEventSelect I/O妯″瀷鏃朵粙緇嶈繃浜嗐俉 S AWa i t F o r M u l t i p l e E v e n t s鍑芥暟浼氱瓑鍊欎竴孌佃瀹氱殑鏃墮棿錛岀瓑寰呬竴涓垨澶氫釜浜嬩歡瀵硅薄榪涘叆鈥滃凡浼犱俊鈥濈姸鎬併傚湪姝ゅ啀嬈℃彁閱掑ぇ瀹舵敞鎰忥細 W S AWa i t F o r M u l t i p l e E v e n t s鍑芥暟涓嬈?br />鏈澶氬彧鑳界瓑寰? 4涓簨浠跺璞°傚彂鐜頒竴嬈¢噸鍙犺姹傚畬鎴愪箣鍚庯紝鎺ョ潃闇瑕佽皟鐢╓ S A G e t O v e r l a p p e dR e s u l t錛堝彇寰楅噸鍙犵粨鏋勶級鍑芥暟錛屽垽鏂偅涓噸鍙犺皟鐢ㄥ埌搴曟槸鎴愬姛錛岃繕鏄け璐ャ傝鍑芥暟鐨勫畾涔夊涓嬶細
聽BOOL WSAGetOverlappedResult(
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽SOCKET s,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽LPWSAOVERLAPPED聽lpOverlapped,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽LPWORD聽lpcbTransfer,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽BOOL聽聽fWait,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽LPWORD聽lpdwFlags
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽);
鍏朵腑錛?s鍙傛暟鐢ㄤ簬鎸囧畾鍦ㄩ噸鍙犳搷浣滃紑濮嬬殑鏃跺欙紝涓庝箣瀵瑰簲鐨勯偅涓鎺ュ瓧銆俵 p O v e r l a p p e d鍙傛暟鏄竴涓寚閽堬紝瀵瑰簲浜庡湪閲嶅彔鎿嶄綔寮濮嬫椂錛屾寚瀹氱殑閭d釜W S A O V E R L A P P E D 緇撴瀯銆?br />l p c b Tr a n s f e r鍙傛暟涔熸槸涓涓寚閽堬紝瀵瑰簲涓涓狣 W O R D錛堝弻瀛楋級鍙橀噺錛岃礋璐f帴鏀朵竴嬈¢噸鍙犲彂閫佹垨鎺ユ敹鎿嶄綔瀹為檯浼犺緭鐨勫瓧鑺傛暟銆俧 Wa i t鍙傛暟鐢ㄤ簬鍐沖畾鍑芥暟鏄惁搴旇絳夊緟涓嬈″緟鍐籌紙鏈喅錛夌殑閲嶅彔鎿嶄綔瀹屾垚銆傝嫢灝唂 Wa i t璁句負T R U E錛岄偅涔堥櫎闈炴搷浣滃畬鎴愶紝鍚﹀垯鍑芥暟涓嶄細榪斿洖錛涜嫢璁句負FA L S E錛岃屼笖鎿嶄綔浠嶇劧澶勪簬鈥滃緟鍐斥濈姸鎬侊紝閭d箞W S A G e t O v e r l a p p e d R e s u l t鍑芥暟浼氳繑鍥濬A L S E鍊鹼紝鍚屾椂榪斿洖涓涓猈 S A _ I O _ I N C O M P L E T E錛圛 / O鎿嶄綔鏈畬鎴愶級閿欒銆備絾灝辨垜浠洰鍓嶇殑鎯呭喌鏉ヨ錛岀敱浜庨渶瑕佺瓑鍊欓噸鍙犳搷浣滅殑涓涓凡浼犱俊浜嬩歡瀹屾垚錛屾墍浠ヨ鍙傛暟鏃犺閲囩敤浠涔堣緗紝閮芥病鏈変換浣曟晥鏋溿?br />鏈鍚庝竴涓弬鏁版槸l p d w F l a g s錛屽畠瀵瑰簲浜庝竴涓寚閽堬紝鎸囧悜涓涓狣 W O R D錛堝弻瀛楋級錛岃礋璐f帴鏀剁粨鏋滄爣蹇楋紙鍋囧鍘熷厛鐨勯噸鍙犺皟鐢ㄦ槸鐢╓ S A R e c v鎴朩 S A R e c v F r o m鍑芥暟鍙戝嚭鐨勶級銆?br />濡俉 S A G e t O v e r l a p p e d R e s u l t鍑芥暟璋冪敤鎴愬姛錛岃繑鍥炲煎氨鏄疶 R U E銆傝繖鎰忓懗鐫鎴戜滑鐨勯噸鍙營 / O鎿嶄綔宸叉垚鍔熷畬鎴愶紝鑰屼笖鐢眑 p c b Tr a n s f e r鍙傛暟鎸囧悜鐨勫煎凡榪涜浜嗘洿鏂般傝嫢榪斿洖鍊兼槸FA L S E錛岄偅涔堝彲鑳芥槸鐢變笅榪頒換浣曚竴縐嶅師鍥犻犳垚鐨勶細
鈻?閲嶅彔I / O鎿嶄綔浠嶅鍦ㄢ滃緟鍐斥濈姸鎬併?br />鈻?閲嶅彔鎿嶄綔宸茬粡瀹屾垚錛屼絾鍚湁閿欒銆?br />鈻?閲嶅彔鎿嶄綔鐨勫畬鎴愮姸鎬佷笉鍙垽鍐籌紝鍥犱負鍦ㄦ彁渚涚粰W S A G e t O v e r l a p p e d R e s u l t鍑芥暟鐨勪竴涓垨
澶氫釜鍙傛暟涓紝瀛樺湪鐫閿欒銆?/p>
]]>
Wi n s o c k鎻愪緵浜嗗彟涓涓湁鐢ㄧ殑寮傛I / O妯″瀷銆傚拰W S A A s y n c S e l e c t妯″瀷綾諱技鐨勬槸錛屽畠涔熷厑璁稿簲鐢ㄧ▼搴忓湪涓涓垨澶氫釜濂楁帴瀛椾笂錛屾帴鏀朵互浜嬩歡涓哄熀紜鐨勭綉緇滀簨浠墮氱煡銆傚浜庤〃8 - 3鎬葷粨鐨勩佺敱W S A A s y n c S e l e c t妯″瀷閲囩敤鐨勭綉緇滀簨浠舵潵璇達紝瀹冧滑鍧囧彲鍘熷皝涓嶅姩鍦扮Щ妞嶅埌鏂版ā鍨嬨傚湪鐢ㄦ柊妯″瀷寮鍙戠殑搴旂敤紼嬪簭涓紝涔熻兘鎺ユ敹鍜屽鐞嗘墍鏈夐偅浜涗簨浠躲傝妯″瀷鏈涓昏鐨勫樊鍒湪浜庣綉緇滀簨浠朵細鎶曢掕嚦涓涓簨浠跺璞″彞鏌勶紝鑰岄潪鎶曢掕嚦涓涓獥鍙d緥紼嬨?br />浜嬩歡閫氱煡
浜嬩歡閫氱煡妯″瀷瑕佹眰鎴戜滑鐨勫簲鐢ㄧ▼搴忛拡瀵規墦綆椾嬌鐢ㄧ殑姣忎竴涓鎺ュ瓧錛岄鍏堝垱寤轟竴涓簨浠跺璞°傚垱寤烘柟娉曟槸璋冪敤W S A C r e a t e E v e n t鍑芥暟錛屽畠鐨勫畾涔夊涓嬶細
WSAEVENT WSACreateEvent(void);
W S A C r e a t e E v e n t鍑芥暟鐨勮繑鍥炲煎緢綆鍗曪紝灝辨槸涓涓垱寤哄ソ鐨勪簨浠跺璞″彞鏌勩備簨浠跺璞″彞鏌勫埌鎵嬪悗錛屾帴涓嬫潵蹇呴』灝嗗叾涓庢煇涓鎺ュ瓧鍏寵仈鍦ㄤ竴璧鳳紝鍚屾椂娉ㄥ唽鑷繁鎰熷叴瓚g殑緗戠粶浜嬩歡綾誨瀷錛屽琛? - 3鎵紺恒傝鍋氬埌榪欎竴鐐癸紝鏂規硶鏄皟鐢╓ S A E v e n t S e l e c t鍑芥暟錛屽瀹冪殑瀹氫箟濡備笅錛?/p>
int WSAEventSelect(
聽聽聽聽聽聽聽聽聽聽SOCKET s,聽
聽聽聽聽聽聽聽聽聽聽WSAEVENT hEventObject,
聽聽聽聽聽聽聽聽聽聽long聽lNetwordEvents
聽聽聽聽聽聽聽聽聽);
聽鍏朵腑錛?s鍙傛暟浠h〃鑷繁鎰熷叴瓚g殑濂楁帴瀛椼俬 E v e n t O b j e c t鍙傛暟鎸囧畾瑕佷笌濂楁帴瀛楀叧鑱斿湪涓璧風殑聽浜嬩歡瀵硅薄鈥旂敤W S A C r e a t e E v e n t鍙栧緱鐨勯偅涓涓傝屾渶鍚庝竴涓弬鏁發 N e t w o r k E v e n t s錛屽垯瀵瑰簲涓涓滀綅鎺╃爜鈥濓紝鐢ㄤ簬鎸囧畾搴旂敤紼嬪簭鎰熷叴瓚g殑鍚勭緗戠粶浜嬩歡綾誨瀷鐨勪竴涓粍鍚堬紙濡傝〃8 - 3鎵紺猴級銆傝鎯寵幏鐭ュ榪欎簺浜嬩歡綾誨瀷鐨勮緇嗚鏄庯紝璇峰弬鑰冩棭鍏堣璁鴻繃鐨刉SAAsyncSelect I/O妯″瀷銆?br />涓篧 S A E v e n t S e l e c t鍒涘緩鐨勪簨浠舵嫢鏈変袱縐嶅伐浣滅姸鎬侊紝浠ュ強涓ょ宸ヤ綔妯″紡銆傚叾涓紝涓ょ宸ヤ綔鐘舵佸垎鍒槸鈥滃凡浼犱俊鈥濓紙s i g n a l e d錛夊拰鈥滄湭浼犱俊鈥濓紙n o n s i g n a l e d錛夈傚伐浣滄ā寮忓垯鍖呮嫭鈥滀漢宸ラ噸璁鋸濓紙manual reset錛夊拰鈥滆嚜鍔ㄩ噸璁鋸濓紙auto reset錛夈俉 S A C r e a t e E v e n t鏈寮濮嬪湪涓縐嶆湭浼犱俊鐨勫伐浣滅姸鎬佷腑錛屽茍鐢ㄤ竴縐嶄漢宸ラ噸璁炬ā寮忥紝鏉ュ垱寤轟簨浠跺彞鏌勩傞殢鐫緗戠粶浜嬩歡瑙﹀彂浜嗕笌涓涓鎺ュ瓧鍏寵仈鍦?br />涓璧風殑浜嬩歡瀵硅薄錛屽伐浣滅姸鎬佷究浼氫粠鈥滄湭浼犱俊鈥濊漿鍙樻垚鈥滃凡浼犱俊鈥濄傜敱浜庝簨浠跺璞℃槸鍦ㄤ竴縐嶄漢宸ラ噸璁炬ā寮忎腑鍒涘緩鐨勶紝鎵浠ュ湪瀹屾垚浜嗕竴涓狪 / O璇鋒眰鐨勫鐞嗕箣鍚庯紝鎴戜滑鐨勫簲鐢ㄧ▼搴忛渶瑕佽礋璐e皢宸ヤ綔鐘舵佷粠宸蹭紶淇℃洿鏀逛負鏈紶淇°傝鍋氬埌榪欎竴鐐癸紝鍙皟鐢╓ S A R e s e t E v e n t鍑芥暟錛屽瀹冪殑瀹氫箟濡備笅錛?/p>
聽BOOL 聽WSAResetEvent(WSAEVENT hEvent);
聽
聽璇ュ嚱鏁板敮涓鐨勫弬鏁頒究鏄竴涓簨浠跺彞鏌勶紱鍩轟簬璋冪敤鏄垚鍔熻繕鏄け璐ワ紝浼氬垎鍒繑鍥濼 R U E鎴朏A L S E銆傚簲鐢ㄧ▼搴忓畬鎴愪簡瀵逛竴涓簨浠跺璞$殑澶勭悊鍚庯紝渚垮簲璋冪敤W S A C l o s e E v e n t鍑芥暟錛岄噴鏀劇敱浜嬩歡鍙ユ焺浣跨敤鐨勭郴緇熻祫婧愩傚W S A C l o s e E v e n t鍑芥暟鐨勫畾涔夊涓嬶細
聽BOOL WSACloseEvent(WSAEVENT hEvent);
聽
聽璇ュ嚱鏁頒篃瑕佹嬁涓涓簨浠跺彞鏌勪綔涓鴻嚜宸卞敮涓鐨勫弬鏁幫紝騫朵細鍦ㄦ垚鍔熷悗榪斿洖T R U E錛屽け璐ュ悗榪斿洖FA L S E銆?br />涓涓鎺ュ瓧鍚屼竴涓簨浠跺璞″彞鏌勫叧鑱斿湪涓璧峰悗錛屽簲鐢ㄧ▼搴忎究鍙紑濮婭 / O澶勭悊錛涙柟娉曟槸絳夊緟緗戠粶浜嬩歡瑙﹀彂浜嬩歡瀵硅薄鍙ユ焺鐨勫伐浣滅姸鎬併俉 S AWa i t F o r M u l t i p l e E v e n t s鍑芥暟鐨勮璁″畻鏃ㄤ究鏄敤鏉ョ瓑寰呬竴涓垨澶氫釜浜嬩歡瀵硅薄鍙ユ焺錛屽茍鍦ㄤ簨鍏堟寚瀹氱殑涓涓垨鎵鏈夊彞鏌勮繘鍏モ滃凡浼犱俊鈥濈姸鎬佸悗錛屾垨鍦ㄨ秴榪囦簡涓涓瀹氱殑鏃墮棿鍛ㄦ湡鍚庯紝绔嬪嵆榪斿洖銆備笅闈㈡槸W S AWa i t F o r M u l t i p l e E v e n t s鍑芥暟鐨勫畾涔夛細
DWORD WSAWaitForMultipleEvents(
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽DWORD cEvent,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽const WSAEVENT聽FAR * lphEvents,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽BOOL 聽fWaitAll,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽DWORD dwTimeout,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽BOOL聽 fAlertable
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽鍏朵腑錛?c E v e n t s鍜宭 p h E v e n t s鍙傛暟瀹氫箟浜嗙敱W S A E V E N T瀵硅薄鏋勬垚鐨勪竴涓暟緇勩傚湪榪欎釜鏁扮粍涓紝c E v e n t s鎸囧畾鐨勬槸浜嬩歡瀵硅薄鐨勬暟閲忥紝鑰宭 p h E v e n t s瀵瑰簲鐨勬槸涓涓寚閽堬紝鐢ㄤ簬鐩存帴寮曠敤璇ユ暟緇勩?br />瑕佹敞鎰忕殑鏄紝 W S AWa i t F o r M u l t i p l e E v e n t s鍙兘鏀寔鐢盬 S A _ M A X I M U M _ WA I T _ E V E N T S瀵硅薄瑙勫畾鐨勪竴涓渶澶у鹼紝鍦ㄦ瀹氫箟鎴? 4涓傚洜姝わ紝閽堝鍙戝嚭W S AWa i t F o r M u l t i p l e E v e n t s璋冪敤鐨勬瘡涓嚎紼嬶紝璇 / O妯″瀷涓嬈℃渶澶氶兘鍙兘鏀寔6 4涓鎺ュ瓧銆傚亣濡傛兂璁╄繖涓ā鍨嬪悓鏃剁鐞嗕笉姝? 4涓
鎺ュ瓧錛屽繀欏誨垱寤洪澶栫殑宸ヤ綔鑰呯嚎紼嬶紝浠ヤ究絳夊緟鏇村鐨勪簨浠跺璞°俧 Wa i t A l l 鍙傛暟鎸囧畾浜哤 S AWa i t F o r M u l t i p l e E v e n t s濡備綍絳夊緟鍦ㄤ簨浠舵暟緇勪腑鐨勫璞°傝嫢璁句負T R U E錛岄偅涔堝彧鏈夌瓑l p h E v e n t s鏁扮粍鍐呭寘鍚殑鎵鏈変簨浠跺璞¢兘宸茶繘鍏モ滃凡浼犱俊鈥濈姸鎬侊紝鍑芥暟鎵嶄細榪斿洖錛涗絾鑻ヨ涓篎A L S E錛屼換浣曚竴涓簨浠跺璞¤繘鍏モ滃凡浼犱俊鈥濈姸鎬侊紝鍑芥暟灝變細榪斿洖銆傚氨鍚庝竴縐嶆儏鍐墊潵璇達紝榪斿洖鍊兼寚鍑轟簡鍒板簳鏄摢涓簨浠跺璞¢犳垚浜嗗嚱鏁扮殑榪斿洖銆傞氬父錛屽簲鐢ㄧ▼搴忓簲灝嗚鍙傛暟璁句負FA L S E錛?br />涓嬈″彧涓轟竴涓鎺ュ瓧浜嬩歡鎻愪緵鏈嶅姟銆俤 w Ti m e o u t鍙傛暟瑙勫畾浜哤 S AWa i t F o r M u l t i p l e E v e n t s鏈澶氬彲絳夊緟涓涓綉緇滀簨浠跺彂鐢熸湁澶氶暱鏃墮棿錛屼互姣涓哄崟浣嶏紝榪欐槸涓欏光滆秴鏃垛濊瀹氥傝秴榪囪瀹氱殑鏃墮棿錛屽嚱鏁板氨浼氱珛鍗寵繑鍥烇紝鍗充嬌鐢眆 Wa i t A l l鍙傛暟瑙勫畾鐨勬潯浠跺皻鏈弧瓚充篃濡傛銆傚瓚呮椂鍊間負0錛屽嚱鏁頒細媯嫻嬫寚瀹氱殑浜嬩歡瀵硅薄鐨勭姸鎬侊紝騫剁珛鍗寵繑鍥炪傝繖鏍蜂竴鏉ワ紝搴旂敤紼嬪簭瀹為檯渚垮彲瀹炵幇瀵逛簨浠跺
璞$殑鈥滆疆璇⑩濄備絾鑰冭檻鍒板畠瀵規ц兘閫犳垚鐨勫獎鍝嶏紝榪樻槸搴斿敖閲忛伩鍏嶅皢瓚呮椂鍊艱涓?銆傚亣濡傛病鏈夌瓑寰呭鐞嗙殑浜嬩歡錛?W S AWa i t F o r M u l t i p l e E v e n t s渚夸細榪斿洖W S A _ WA I T _ T I M E O U T銆傚d w s Ti m e o u t璁句負W S A _ I N F I N I T E錛堟案榪滅瓑寰咃級錛岄偅涔堝彧鏈夊湪涓涓綉緇滀簨浠朵紶淇′簡涓涓簨浠跺璞″悗錛屽嚱鏁版墠
浼氳繑鍥炪傛渶鍚庝竴涓弬鏁版槸f A l e r t a b l e錛屽湪鎴戜滑浣跨敤W S A E v e n t S e l e c t妯″瀷鐨勬椂鍊欙紝瀹冩槸鍙互蹇界暐鐨勶紝涓斿簲璁句負FA L S E銆傝鍙傛暟涓昏鐢ㄤ簬鍦ㄩ噸鍙犲紡I / O妯″瀷涓紝鍦ㄥ畬鎴愪緥紼嬬殑澶勭悊榪囩▼涓嬌鐢ㄣ?br />鏈珷鍚庨潰榪樹細瀵規璇﹁堪銆?/p>
鑻 S AWa i t F o r M u l t i p l e E v e n t s鏀跺埌涓涓簨浠跺璞$殑緗戠粶浜嬩歡閫氱煡錛屼究浼氳繑鍥炰竴涓鹼紝鎸囧嚭閫犳垚鍑芥暟榪斿洖鐨勪簨浠跺璞°傝繖鏍蜂竴鏉ワ紝鎴戜滑鐨勫簲鐢ㄧ▼搴忎究鍙紩鐢ㄤ簨浠舵暟緇勪腑宸蹭紶淇$殑浜嬩歡錛屽茍媯绱笌閭d釜浜嬩歡瀵瑰簲鐨勫鎺ュ瓧錛屽垽鏂埌搴曟槸鍦ㄥ摢涓鎺ュ瓧涓婏紝鍙戠敓浜嗕粈涔堢綉緇滀簨浠剁被鍨嬨?br />瀵逛簨浠舵暟緇勪腑鐨勪簨浠惰繘琛屽紩鐢ㄦ椂錛屽簲璇ョ敤W S AWa i t F o r M u l t i p l e E v e n t s鐨勮繑鍥炲鹼紝鍑忓幓棰勫畾涔夊糤 S A _ WA I T _ E V E N T _ 0錛屽緱鍒板叿浣撶殑寮曠敤鍊鹼紙鍗崇儲寮曚綅緗級銆傚涓嬩緥鎵紺猴細
Index = WSAWaitForMultipleEvents(...);
MyEvent = EventArray[Index - WSA_WAIT_EVENT_0];
鐭ラ亾浜嗛犳垚緗戠粶浜嬩歡鐨勫鎺ュ瓧鍚庯紝鎺ヤ笅鏉ュ彲璋冪敤W S A E n u m N e t w o r k E v e n t s鍑芥暟錛岃皟鏌ュ彂鐢熶簡浠涔堢被鍨嬬殑緗戠粶浜嬩歡銆傝鍑芥暟瀹氫箟濡備笅錛?/p>
聽int WSAEnumNetworkEvents(
聽聽聽聽聽聽聽聽聽聽聽聽聽聽SOCKET s,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽WSAEVENT hEventObject,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽LPWSANETWORKEVENTS lpNetworkEvents
聽聽聽聽聽聽聽聽聽聽聽聽聽);
聽s鍙傛暟瀵瑰簲浜庨犳垚浜嗙綉緇滀簨浠剁殑濂楁帴瀛椼俬 E v e n t O b j e c t鍙傛暟鍒欐槸鍙夌殑錛涘畠鎸囧畾浜嗕竴涓簨浠跺彞鏌勶紝瀵瑰簲浜庢墦綆楅噸璁劇殑閭d釜浜嬩歡瀵硅薄銆傜敱浜庢垜浠殑浜嬩歡瀵硅薄澶勫湪涓涓滃凡浼犱俊鈥濈姸鎬侊紝鎵浠ュ彲灝嗗畠浼犲叆錛屼護鍏惰嚜鍔ㄦ垚涓衡滄湭浼犱俊鈥濈姸鎬併傚鏋滀笉鎯崇敤h E v e n t O b j e c t鍙傛暟鏉ラ噸璁句簨浠訛紝閭d箞鍙嬌鐢╓ S A R e s e t E v e n t 鍑芥暟錛?璇ュ嚱鏁版棭鍏堝凡緇忚璁鴻繃浜嗐傛渶鍚庝竴涓弬鏁版槸l p N e t w o r k E v e n t s錛屼唬琛ㄤ竴涓寚閽堬紝鎸囧悜W S A N E T W O R K E V E N T S緇撴瀯錛岀敤浜庢帴鏀跺鎺ュ瓧涓婂彂
鐢熺殑緗戠粶浜嬩歡綾誨瀷浠ュ強鍙兘鍑虹幇鐨勪換浣曢敊璇唬鐮併備笅闈㈡槸W S A N E T W O R K E V E N T S緇撴瀯鐨勫畾涔夛細
聽typedef struct _WSANETWORKEVENTS
聽{
聽聽long lNetworkEvents;
聽聽int iErrorCode[FD_MAX_EVENTS];
聽}WSANETWORKEVENTS,FAR * LPWSANETWORKEVENTS;
聽
聽l N e t w o r k E v e n t s鍙傛暟鎸囧畾浜嗕竴涓鹼紝瀵瑰簲浜庡鎺ュ瓧涓婂彂鐢熺殑鎵鏈夌綉緇滀簨浠剁被鍨嬶紙鍙傝琛? - 3錛夈?br />娉ㄦ剰涓涓簨浠惰繘鍏ヤ紶淇$姸鎬佹椂錛屽彲鑳戒細鍚屾椂鍙戠敓澶氫釜緗戠粶浜嬩歡綾誨瀷銆備緥濡傦紝涓涓箒蹇?br />鐨勬湇鍔″櫒搴旂敤鍙兘鍚屾椂鏀跺埌FD_READ鍜孎D_WRITE閫氱煡銆?br />i E r r o r C o d e鍙傛暟鎸囧畾鐨勬槸涓涓敊璇唬鐮佹暟緇勶紝鍚宭 N e t w o r k E v e n t s涓殑浜嬩歡鍏寵仈鍦ㄤ竴璧楓傞拡瀵規瘡涓綉緇滀簨浠剁被鍨嬶紝閮藉瓨鍦ㄧ潃涓涓壒孌婄殑浜嬩歡绱㈠紩錛屽悕瀛椾笌浜嬩歡綾誨瀷鐨勫悕瀛楃被浼鹼紝鍙槸瑕佸湪浜嬩歡鍚嶅瓧鍚庨潰娣誨姞涓涓?_ B I T鈥濆悗緙瀛椾覆鍗沖彲銆備緥濡傦紝瀵笷 D _ R E A D浜嬩歡綾誨瀷鏉ヨ錛宨 E r r o r C o d e鏁扮粍鐨勭儲寮曟爣璇嗙渚挎槸F D _ R E A D _ B I T銆備笅榪頒唬鐮佺墖鏂姝よ繘琛屼簡闃愰噴錛堥拡瀵笷 D _ R E A D浜嬩歡錛夛細
聽聽if(NetWorkEvents.lNetworkEvents & FD_READ)
聽聽{
聽聽聽if(NetWorkEvents.iErrorCode[FD_READ_BIT] != 0)
聽聽聽{
聽聽聽聽printf("FD_READ FAILED with error %d\n",NetWorkEvents.iErrorCode[FD_READ_BIT]);
聽聽聽}
聽聽}
瀹屾垚浜嗗W S A N E T W O R K E V E N T S緇撴瀯涓殑浜嬩歡鐨勫鐞嗕箣鍚庯紝鎴戜滑鐨勫簲鐢ㄧ▼搴忓簲鍦ㄦ墍鏈夊彲鐢ㄧ殑濂楁帴瀛椾笂錛岀戶緇瓑寰呮洿澶氱殑緗戠粶浜嬩歡銆傚湪紼嬪簭娓呭崟8 - 6涓紝鎴戜滑闃愰噴浜嗗浣曚嬌鐢╓ S A E v e n t S e l e c t榪欑I / O妯″瀷錛屾潵寮鍙戜竴涓湇鍔″櫒搴旂敤錛屽悓鏃跺浜嬩歡瀵硅薄榪涜綆$悊銆傝繖涓▼搴忎富瑕佺潃鐪間簬寮鍙戜竴涓熀鏈殑鏈嶅姟鍣ㄥ簲鐢ㄨ娑夊強鍒扮殑姝ラ錛屼護鍏跺悓鏃惰礋璐d竴涓垨澶氫釜濂楁帴瀛楃殑綆$悊銆?/p>
瀹屾垚浜嗗W S A N E T W O R K E V E N T S緇撴瀯涓殑浜嬩歡鐨勫鐞嗕箣鍚庯紝鎴戜滑鐨勫簲鐢ㄧ▼搴忓簲鍦ㄦ墍鏈夊彲鐢ㄧ殑濂楁帴瀛椾笂錛岀戶緇瓑寰呮洿澶氱殑緗戠粶浜嬩歡銆傚湪紼嬪簭娓呭崟8 - 6涓紝鎴戜滑闃愰噴浜嗗浣曚嬌鐢╓ S A E v e n t S e l e c t榪欑I / O妯″瀷錛屾潵寮鍙戜竴涓湇鍔″櫒搴旂敤錛屽悓鏃跺浜嬩歡瀵硅薄榪涜綆$悊銆傝繖涓▼搴忎富瑕佺潃鐪間簬寮鍙戜竴涓熀鏈殑鏈嶅姟鍣ㄥ簲鐢ㄨ娑夊強鍒扮殑姝ラ錛屼護鍏跺悓鏃惰礋璐d竴涓垨澶氫釜濂楁帴瀛楃殑綆$悊銆?br />紼嬪簭娓呭崟8-6 閲囩敤WSAEventSelect I/O妯″瀷鐨勭ず鑼冩湇鍔″櫒婧愪唬鐮?/p>
Windows
鏀寔涓ょ綾誨瀷鐨勫簲鐢ㄧ▼搴忋備竴縐嶆槸鍩轟簬鍥懼艦鐢ㄦ埛鐣岄潰錛?/span>
GUI
錛夌殑搴旂敤紼嬪簭錛屽彟涓縐嶆槸鍩轟簬鎺у埗鍙扮敤鎴風晫闈紙
CUI
錛夌殑搴旂敤紼嬪簭銆?/span>
(
涓よ呴棿鍙互鐩鎬簰杞寲
,
娌℃湁鏄庣‘鐨勭晫闄?/span>
,
灝辨槸璇村彲浠ヨ
CUI
紼嬪簭涓彲浠ユ湁
Dialog
鐣岄潰絳?/span>
,
鑰?/span>
GUI
鐣岄潰涓篃鍙互鏈?/span>
console
鏉ヨ緭鍑轟俊鎭?/span>
)
瀵逛簬涓涓簲鐢ㄧ▼搴?span lang="EN-US" twffan="done">:
涓
鎿嶄綔緋葷粺瀹為檯涓婂厛璋冪敤鐨勬槸C / C + +榪愯鏈熷惎鍔ㄥ嚱鏁般傝鍑芥暟璐熻矗瀵?span lang="EN-US" twffan="done">C / C + +榪愯鏈熷簱榪涜鍒濆鍖栵紝榪欐牱錛屽氨鍙互璋冪敤m a l l o c 鍜?span lang="EN-US" twffan="done">f r e e 涔嬬被鐨勫嚱鏁般傚畠榪樿兘澶熺‘淇濆凡緇忓0鏄庣殑浠諱綍鍏ㄥ眬瀵硅薄鍜岄潤鎬?span lang="EN-US" twffan="done">C + +瀵硅薄鑳藉鍦ㄤ唬鐮佹墽琛屼互鍓嶆紜湴鍒涘緩銆傞摼鎺ョ▼搴忚礋璐e湪瀹冭繛鎺ュ彲鎵ц鏂囦歡鏃墮夋嫨鐩稿簲鐨?span lang="EN-US" twffan="done">C / C + +榪愯鏈熷惎鍔ㄥ嚱鏁般傚鏋滆瀹氫簡/ S U B S Y S T E M : W I N D O W S 閾炬帴紼嬪簭寮鍏籌紝閭?涔堣閾炬帴紼嬪簭鏈熸湜鎵懼埌涓涓?span lang="EN-US" twffan="done">Wi n M a i n 鎴?span lang="EN-US" twffan="done">w Wi n m a i n鍑芥暟銆傚鏋滆繖涓や釜鍑芥暟閮戒笉瀛樺湪錛岄摼鎺ョ▼搴忎究榪斿洖涓涓?span lang="EN-US" twffan="done">鈥?/span>鏈漿鎹㈢殑澶栭儴絎﹀彿鈥?/span>鐨勯敊璇秷 鎭傚惁鍒欙紝瀹冨彲浠ュ垎鍒夋嫨Wi n M a i n C RT S t a r t u p 鍑芥暟鎴?span lang="EN-US" twffan="done">w Wi n M a i n C RT S t a r t u p 鍑芥暟銆?span lang="EN-US" twffan="done">
鍚姩鍑芥暟鐨勫姛鑳藉綊綰沖涓嬶細
鈥? 媯绱㈡寚鍚戞柊榪涚▼鐨勫畬鏁村懡浠よ鐨勬寚閽堛?/span>
鈥? 媯绱㈡寚鍚戞柊榪涚▼鐨勭幆澧冨彉閲忕殑鎸囬拡銆?/span>
鈥? 瀵?/font> C / C + + 榪愯鏈熺殑鍏ㄥ眬鍙橀噺榪涜鍒濆鍖栥傚鏋滃寘鍚簡 S t d L i b . h 鏂囦歡錛屼唬鐮佸氨鑳借闂繖浜涘彉閲忋傝〃 4 - 1 鍒楀嚭浜嗚繖浜涘彉閲忋?/span>
鈥? 瀵?/font> C 榪愯鏈熷唴瀛樺崟鍏冨垎閰嶅嚱鏁幫紙 m a l l o c 鍜?/font> c a l l o c 錛夊拰鍏朵粬浣庡眰杈撳叆 / 杈撳嚭渚嬬▼浣跨敤鐨勫唴瀛樻爤榪涜鍒濆鍖栥?/span>
鈥?
涓烘墍鏈夊叏灞鍜岄潤鎬?/font>
C + +
綾誨璞¤皟鐢ㄦ瀯閫犲嚱鏁般?/span>
浜?/font> 褰撴墍鏈夎繖浜涘垵濮嬪寲鎿嶄綔瀹屾垚鍚庯紝 C / C + + 鍚姩鍑芥暟灝辮皟鐢ㄥ簲鐢ㄧ▼搴忕殑榪涘叆鐐瑰嚱鏁般傚鏋滅紪鍐欎簡涓涓?/font> w Wi n M a i n 鍑芥暟錛屽畠灝嗕互涓嬮潰鐨勫艦寮忚璋冪敤 錛?/span>
GetStartupInfo(&StartupInfo); int nMainRetVal = wWinMain(GetMjduleHandle(NULL), NULL, pszCommandLineUnicode, (StartupInfo.dwFlags & STARTF_USESHOWWINDOW) ? StartupInfo.wShowWindow:SW_SHOWDEFAULT);
聽
涓?/p>
褰撹繘鍏ョ偣鍑芥暟榪斿洖鏃訛紝鍚姩鍑芥暟渚胯皟鐢?/span>
C
榪愯鏈熺殑
e x i t
鍑芥暟錛屽皢榪斿洖鍊鹼紙
n M a i n R e t Va l
錛変紶閫掔粰瀹冦?/span>
E x i t
鍑芥暟璐熻矗涓嬮潰鐨勬搷浣滐細
鈥?
璋冪敤鐢?/span>
_onexit
鍑芥暟鐨勮皟鐢ㄨ屾敞鍐岀殑浠諱綍鍑芥暟銆?/span>
鈥?
涓烘墍鏈夊叏灞鐨勫拰闈欐佺殑
C++
綾誨璞¤皟鐢ㄦ瀽鏋勫嚱鏁般?/span>
鈥?
璋冪敤鎿嶄綔緋葷粺鐨?/span>
ExitProcess
鍑芥暟錛屽皢
nMainRetVal
浼犻掔粰瀹冦傝繖浣垮緱璇ユ搷浣滅郴緇熻兘澶熸挙娑堣繘紼嬪茍璁劇疆瀹冪殑
e x i t
浠g爜銆?/span>
闄勫綍
:
鍚勭搴旂敤紼嬪簭鐨勮繘鍏ョ偣鍙婂搴旂殑鍚姩鍑芥暟
|
搴旂敤紼嬪簭綾誨瀷 |
榪涘叆鐐?span lang="EN-US" twffan="done"> |
宓屽叆鍙墽琛屾枃浠剁殑鍚姩鍑芥暟 |
|
闇瑕?span lang="EN-US" twffan="done">ANSI瀛楃鍜屽瓧絎︿覆鐨?span lang="EN-US" twffan="done">GUI搴旂敤紼嬪簭 |
WinMain |
WinMainCRTStartup |
|
闇瑕?span lang="EN-US" twffan="done">Unicode瀛楃鍜屽瓧絎︿覆鐨?span lang="EN-US" twffan="done">GUI搴旂敤紼嬪簭 |
wWinMainw |
WinMainCRTStartup |
|
闇瑕?span lang="EN-US" twffan="done">ANSI瀛楃鍜屽瓧絎︿覆鐨?span lang="EN-US" twffan="done">CUI搴旂敤紼嬪簭 |
main |
mainCRTStartup |
|
闇瑕?span lang="EN-US" twffan="done">Unicode瀛楃鍜屽瓧絎︿覆鐨?span lang="EN-US" twffan="done">CUI搴旂敤紼嬪簭 |
wmain |
wmainCRTStartup |
| LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case ... ... case ... ... } return DefWindowProc (hwnd, message, wParam, lParam) ; } |
| #include "stdafx.h" #include 錛渨indows.h錛?BR> //涓銆佹秷鎭鐞嗗嚱鏁?BR>//鍙傛暟:紿楀彛鍙ユ焺錛屾秷鎭紝娑堟伅鍙傛暟錛屾秷鎭弬鏁?BR>LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { 銆//澶勭悊鎰熷叴瓚g殑娑堟伅 銆switch (message) 銆{ 銆銆case WM_DESTROY: 銆銆銆//褰撶敤鎴峰叧闂獥鍙o紝紿楀彛閿姣侊紝紼嬪簭闇緇撴潫錛屽彂閫鍑烘秷鎭紝浠ラ鍑烘秷鎭驚鐜?BR>銆銆銆PostQuitMessage (0) ; 銆銆銆return 0 ; 銆} 銆//鍏朵粬娑堟伅浜ょ粰鐢辯郴緇熸彁渚涚殑緙虹渷澶勭悊鍑芥暟 銆return ::DefWindowProc (hwnd, message, wParam, lParam) ; } //浜屻佸簲鐢ㄧ▼搴忎富鍑芥暟 //鍙傛暟:瀹炰緥鍙ユ焺銆佸墠涓涓疄渚嬬殑鍙ユ焺銆佸懡浠よ鍙傛暟銆佺獥鍙f樉紺烘柟寮?BR>int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { 銆//1.娉ㄥ唽紿楀彛綾?BR>銆static TCHAR szAppName[] = TEXT ("HelloWin") ; //紿楀彛綾誨悕縐?BR>銆//瀹氬埗"紿楀彛綾?緇撴瀯 銆WNDCLASS wndclass ; 銆wndclass.style = CS_HREDRAW | CS_VREDRAW ; 銆wndclass.lpfnWndProc = WndProc ; //鍏寵仈娑堟伅澶勭悊鍑芥暟 銆wndclass.cbClsExtra = 0 ; 銆wndclass.cbWndExtra = 0 ; 銆wndclass.hInstance = hInstance ; //瀹炰緥鍙ユ焺 銆wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; //鍥炬爣 銆wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; //鍏夋爣 銆wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); //鐢誨埛 銆wndclass.lpszMenuName = NULL ; 銆wndclass.lpszClassName = szAppName; //綾誨悕縐?BR>銆//娉ㄥ唽 銆if (!ReGISterClass (&wndclass)) 銆{ 銆銆MessageBox (NULL, TEXT ("RegisterClass Fail!"), 銆銆szAppName, MB_ICONERROR) ; 銆銆return 0 ; 銆} 銆//寤虹珛紿楀彛 銆HWND hwnd ; 銆hwnd = CreateWindow (szAppName, //紿楀彛綾誨悕縐?BR>銆銆TEXT ("The Hello Program"), //紿楀彛鏍囬 銆銆WS_OVERLAPPEDWINDOW, //紿楀彛椋庢牸 銆銆CW_USEDEFAULT, 銆銆CW_USEDEFAULT, 銆銆CW_USEDEFAULT, 銆銆CW_USEDEFAULT, 銆銆NULL, 銆銆NULL, 銆銆hInstance, //瀹炰緥鍙ユ焺 銆銆NULL); 銆ShowWindow (hwnd, iCmdShow) ; 銆UpdateWindow (hwnd) ; 銆 銆//娑堟伅寰幆 銆MSG msg ; 銆while (GetMessage (&msg, NULL, 0, 0)) //浠庢秷鎭槦鍒椾腑鍙栨秷鎭? 銆{ 銆銆TranslateMessage (&msg) ; //杞崲娑堟伅 銆銆DispatchMessage (&msg) ; //媧懼彂娑堟伅 銆} 銆return msg.wParam ; } |