锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 1銆?/span>diff 錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞 NAME diff - find differences between two files SYNOPSIS diff [options] from-file to-file 錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞 綆鍗曠殑璇達紝diff鐨勫姛鑳藉氨鏄敤鏉ユ瘮杈冧袱涓枃浠剁殑涓嶅悓錛岀劧鍚庤褰曚笅鏉ワ紝涔熷氨鏄墍璋撶殑diff琛ヤ竵銆傝娉曟牸寮忥細diff 銆愰夐」銆?/span> 婧愭枃浠訛紙澶癸級 鐩殑鏂囦歡錛堝す錛?/span>錛屽氨鏄緇?span style="COLOR: green">婧愭枃浠訛紙澶癸級鎵撲釜琛ヤ竵錛屼嬌涔嬪彉鎴?span style="COLOR: fuchsia">鐩殑鏂囦歡錛堝す錛?/span>錛屾湳璇篃灝辨槸“鍗囩駭”銆備笅闈粙緇嶄笁涓渶涓哄父鐢ㄩ夐」錛?/span> -r 鏄竴涓掑綊閫夐」錛岃緗簡榪欎釜閫夐」錛?/span>diff浼氬皢涓や釜涓嶅悓鐗堟湰婧愪唬鐮佺洰褰曚腑鐨勬墍鏈夊搴旀枃浠跺叏閮ㄩ兘榪涜涓嬈℃瘮杈冿紝鍖呮嫭瀛愮洰褰曟枃浠躲?/span> -N 閫夐」紜繚琛ヤ竵鏂囦歡灝嗘紜湴澶勭悊宸茬粡鍒涘緩鎴栧垹闄ゆ枃浠剁殑鎯呭喌銆?/span> -u 閫夐」浠ョ粺涓鏍煎紡鍒涘緩琛ヤ竵鏂囦歡錛岃繖縐嶆牸寮忔瘮緙虹渷鏍煎紡鏇寸揣鍑戜簺銆?/span> 2銆?/span>patch 錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞 NAME patch - apply a diff file to an original SYNOPSIS patch [options] [originalfile [patchfile]] but usually just patch -pnum <patchfile> 錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞 綆鍗曠殑璇達紝patch灝辨槸鍒╃敤diff鍒朵綔鐨勮ˉ涓佹潵瀹炵幇婧愭枃浠訛紙澶癸級鍜?span style="COLOR: fuchsia">鐩殑鏂囦歡錛堝す錛?/span>鐨勮漿鎹€傝繖鏍瘋灝辨剰鍛崇潃浣犲彲浠ユ湁婧愭枃浠訛紙澶癸級鈥曗?/span>>鐩殑鏂囦歡錛堝す錛?/span>錛屼篃鍙互鐩殑鏂囦歡錛堝す錛?/span>鈥曗?/span>>婧愭枃浠訛紙澶癸級銆?/span>涓嬮潰浠嬬粛鍑犱釜鏈甯哥敤閫夐」錛?/span> -p0 閫夐」瑕佷粠褰撳墠鐩綍鏌ユ壘鐩殑鏂囦歡錛堝す錛?/span> -p1 閫夐」瑕佸拷鐣ユ帀絎竴灞傜洰褰曪紝浠庡綋鍓嶇洰褰曞紑濮嬫煡鎵俱?/span> ************************************************************ 鍦ㄨ繖閲屼互瀹炰緥璇存槑錛?/span> --- old/modules/pcitable Mon Sep 27 11:03:56 1999 +++ new/modules/pcitable Tue Dec 19 20:05:41 2000 濡傛灉浣跨敤鍙傛暟-p0錛岄偅灝辮〃紺轟粠褰撳墠鐩綍鎵句竴涓彨鍋歰ld鐨勬枃浠跺す錛屽湪瀹冧笅闈㈠鎵緈odules涓嬬殑pcitable鏂囦歡鏉ユ墽琛宲atch鎿嶄綔銆?/font> 濡傛灉浣跨敤鍙傛暟-p1錛岄偅灝辮〃紺哄拷鐣ョ涓灞傜洰褰曪紙鍗充笉綆ld錛夛紝浠庡綋鍓嶇洰褰曞鎵緈odules鐨勬枃浠跺す錛屽湪瀹冧笅闈㈡壘pcitable銆傝繖鏍風殑鍓嶆彁鏄綋鍓嶇洰 褰曞繀欏諱負modules鎵鍦ㄧ殑鐩綍銆傝宒iff琛ヤ竵鏂囦歡鍒欏彲浠ュ湪浠繪剰浣嶇疆錛屽彧瑕佹寚鏄庝簡diff琛ヤ竵鏂囦歡鐨勮礬寰勫氨鍙互浜嗐傚綋鐒訛紝鍙互鐢ㄧ浉瀵硅礬寰勶紝涔熷彲浠ョ敤緇?瀵硅礬寰勩備笉榪囨垜涓鑸範鎯敤鐩稿璺緞銆?/font> -E 閫夐」璇存槑濡傛灉鍙戠幇浜嗙┖鏂囦歡錛岄偅涔堝氨鍒犻櫎瀹?/span> -R 閫夐」璇存槑鍦ㄨˉ涓佹枃浠朵腑鐨?/span>“鏂?/span>”鏂囦歡鍜?/span>“鏃?/span>”鏂囦歡鐜板湪瑕佽皟鎹㈣繃鏉ヤ簡錛堝疄闄呬笂灝辨槸緇欐柊鐗堟湰鎵撹ˉ涓侊紝璁╁畠鍙樻垚鑰佺増鏈級 涓嬮潰緇撳悎鍏蜂綋瀹炰緥鏉ュ垎鏋愬拰瑙e喅錛屽垎涓轟袱縐嶇被鍨嬶細涓哄崟涓枃浠舵墦琛ヤ竵鍜屼負鏂囦歡澶瑰唴鐨勫涓枃浠舵墦琛ヤ竵銆?/span> 鐜錛氬湪RedHat 9.0涓嬮潰浠?/span>armlinux鐢ㄦ埛鐧婚檰銆?/span> 鐩綍鏍戝涓嬶細 |-- bootloader |-- debug |-- images |-- kernel |-- program |-- rootfiles |-- software |-- source |-- sysapps |-- tmp `-- tools 涓嬮潰鍦?/span>program鏂囦歡澶逛笅闈㈠緩绔?/span>patch鏂囦歡澶逛綔涓哄疄楠岀敤錛岀劧鍚庤繘鍏?/span>patch鏂囦歡澶廣?/span> 涓銆佷負鍗曚釜鏂囦歡榪涜琛ヤ竵鎿嶄綔 1銆佸緩绔嬫祴璇曟枃浠?/span>test0銆?/span>test1 [armlinux@lqm patch]$ cat >>test0<<EOF > 111111 > 111111 > 111111 > EOF [armlinux@lqm patch]$ more test0 111111 111111 111111 [armlinux@lqm patch]$ cat >>test1<<EOF > 222222 > 111111 > 222222 > 111111 > EOF [armlinux@lqm patch]$ more test1 222222 111111 222222 111111 2銆佷嬌鐢?/span>diff鍒涘緩琛ヤ竵test1.patch [armlinux@lqm patch]$ diff -uN test0 test1 > test1.patch 銆愭敞錛氬洜涓哄崟涓枃浠訛紝鎵浠ヤ笉闇瑕?/span>-r閫夐」銆傞夐」欏哄簭娌℃湁鍏崇郴錛屽嵆鍙互鏄?/span>-uN錛屼篃鍙互鏄?/span>-Nu銆傘?/span> [armlinux@lqm patch]$ ls test0 test1 test1.patch [armlinux@lqm patch]$ more test1.patch ************************************************************ patch鏂囦歡鐨勭粨鏋?/span> 琛ヤ竵澶?/span> 琛ヤ竵澶存槸鍒嗗埆鐢?/span>---/+++寮澶寸殑涓よ錛岀敤鏉ヨ〃紺鴻鎵撹ˉ涓佺殑鏂囦歡銆?/span>---寮澶磋〃紺烘棫鏂囦歡錛?/span>+++寮澶磋〃紺烘柊鏂囦歡銆?/span> 涓涓ˉ涓佹枃浠朵腑鐨勫涓ˉ涓?/span> 涓涓ˉ涓佹枃浠朵腑鍙兘鍖呭惈浠?/span>---/+++寮澶寸殑寰堝鑺傦紝姣忎竴鑺傜敤鏉ユ墦涓涓ˉ涓併傛墍浠ュ湪涓涓ˉ涓佹枃浠朵腑鍙互鍖呭惈濂藉涓ˉ涓併?/span> 鍧?/span> 鍧楁槸琛ヤ竵涓淇敼鐨勫湴鏂廣傚畠閫氬父鐢變竴閮ㄥ垎涓嶇敤淇敼鐨勪笢瑗垮紑濮嬪拰緇撴潫銆備粬浠彧鏄敤鏉ヨ〃紺鴻淇敼鐨勪綅緗備粬浠氬父浠?/span>@@寮濮嬶紝緇撴潫浜庡彟涓涓潡鐨勫紑濮嬫垨鑰呬竴涓柊鐨勮ˉ涓佸ご銆?/span> 鍧楃殑緙╄繘 鍧椾細緙╄繘涓鍒楋紝鑰岃繖涓鍒楁槸鐢ㄦ潵琛ㄧず榪欎竴琛屾槸瑕佸鍔犺繕鏄鍒犻櫎鐨勩?/span> 鍧楃殑絎竴鍒?/span> +鍙瘋〃紺鴻繖涓琛屾槸瑕佸姞涓婄殑銆?/span> -鍙瘋〃紺鴻繖涓琛屾槸瑕佸垹闄ょ殑銆?/span> 娌℃湁鍔犲彿涔熸病鏈夊噺鍙瘋〃紺鴻繖閲屽彧鏄紩鐢ㄧ殑鑰屼笉闇瑕佷慨鏀廣?/span> ************************************************************ ***diff鍛戒護浼氬湪琛ヤ竵鏂囦歡涓褰曡繖涓や釜鏂囦歡鐨勯嬈″垱寤烘椂闂達紝濡備笅*** --- test0 2006-08-18 09:12:01.000000000 +0800 +++ test1 2006-08-18 09:13:09.000000000 +0800 @@ -1,3 +1,4 @@ +222222 111111 -111111 +222222 111111 [armlinux@lqm patch]$ patch -p0 < test1.patch patching file test0 [armlinux@lqm patch]$ ls test0 test1 test1.patch [armlinux@lqm patch]$ cat test0 222222 111111 222222 111111 3銆佸彲浠ュ幓闄よˉ涓侊紝鎭㈠鏃х増鏈?/span> [armlinux@lqm patch]$ patch -RE -p0 < test1.patch patching file test0 [armlinux@lqm patch]$ ls test0 test1 test1.patch [armlinux@lqm patch]$ cat test0 111111 111111 111111 浜屻佷負澶氫釜鏂囦歡榪涜琛ヤ竵鎿嶄綔 1銆佸垱寤烘祴璇曟枃浠跺す [armlinux@lqm patch]$ mkdir prj0 [armlinux@lqm patch]$ cp test0 prj0 [armlinux@lqm patch]$ ls prj0 test0 test1 test1.patch [armlinux@lqm patch]$ cd prj0/ [armlinux@lqm prj0]$ ls test0 [armlinux@lqm prj0]$ cat >>prj0name<<EOF > -------- > prj0/prj0name > -------- > EOF [armlinux@lqm prj0]$ ls prj0name test0 [armlinux@lqm prj0]$ cat prj0name -------- prj0/prj0name -------- [armlinux@lqm prj0]$ cd .. [armlinux@lqm patch]$ mkdir prj1 [armlinux@lqm patch]$ cp test1 prj1 [armlinux@lqm patch]$ cd prj1 [armlinux@lqm prj1]$ cat >>prj1name<<EOF > --------- > prj1/prj1name > --------- > EOF [armlinux@lqm prj1]$ cat prj1name --------- prj1/prj1name --------- [armlinux@lqm prj1]$ cd .. 2銆佸垱寤鴻ˉ涓?/span> [armlinux@lqm patch]$ diff -uNr prj0 prj1 > prj1.patch [armlinux@lqm patch]$ more prj1.patch diff -uNr prj0/prj0name prj1/prj0name --- prj0/prj0name 2006-08-18 09:25:11.000000000 +0800 +++ prj1/prj0name 1970-01-01 08:00:00.000000000 +0800 @@ -1,3 +0,0 @@ --------- -prj0/prj0name --------- diff -uNr prj0/prj1name prj1/prj1name --- prj0/prj1name 1970-01-01 08:00:00.000000000 +0800 +++ prj1/prj1name 2006-08-18 09:26:36.000000000 +0800 @@ -0,0 +1,3 @@ +--------- +prj1/prj1name +--------- diff -uNr prj0/test0 prj1/test0 --- prj0/test0 2006-08-18 09:23:53.000000000 +0800 +++ prj1/test0 1970-01-01 08:00:00.000000000 +0800 @@ -1,3 +0,0 @@ -111111 -111111 -111111 diff -uNr prj0/test1 prj1/test1 --- prj0/test1 1970-01-01 08:00:00.000000000 +0800 +++ prj1/test1 2006-08-18 09:26:00.000000000 +0800 @@ -0,0 +1,4 @@ +222222 +111111 +222222 +111111 [armlinux@lqm patch]$ ls prj0 prj1 prj1.patch test0 test1 test1.patch [armlinux@lqm patch]$ cp prj1.patch ./prj0 [armlinux@lqm patch]$ cd prj0 [armlinux@lqm prj0]$ patch -p1 < prj1.patch patching file prj0name patching file prj1name patching file test0 patching file test1 [armlinux@lqm prj0]$ ls prj1name prj1.patch test1 [armlinux@lqm prj0]$ patch -R -p1 < prj1.patch patching file prj0name patching file prj1name patching file test0 patching file test1 [armlinux@lqm prj0]$ ls prj0name prj1.patch test0 錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛?/span> 鎬葷粨涓涓嬶細 鍗曚釜鏂囦歡 diff –uN from-file to-file >to-file.patch patch –p0 < to-file.patch patch –RE –p0 < to-file.patch 澶氫釜鏂囦歡 diff –uNr from-docu to-docu >to-docu.patch patch –p1 < to-docu.patch patch –R –p1 <to-docu.patch
]]>
setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));
2. 濡傛灉瑕佸凡緇忓浜庤繛鎺ョ姸鎬佺殑soket鍦ㄨ皟鐢╟losesocket鍚庡己鍒跺叧闂紝涓嶇粡鍘?br>TIME_WAIT鐨勮繃紼嬶細
BOOL bDontLinger = FALSE;
setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(const char*)&bDontLinger,sizeof(BOOL));
3.鍦╯end(),recv()榪囩▼涓湁鏃剁敱浜庣綉緇滅姸鍐電瓑鍘熷洜錛屽彂鏀朵笉鑳介鏈熻繘琛?鑰岃緗敹鍙戞椂闄愶細
int nNetTimeout=1000;//1縐?br>//鍙戦佹椂闄?br>setsockopt(socket錛孲OL_S0CKET,SO_SNDTIMEO錛?char *)&nNetTimeout,sizeof(int));
//鎺ユ敹鏃墮檺
setsockopt(socket錛孲OL_S0CKET,SO_RCVTIMEO錛?char *)&nNetTimeout,sizeof(int));
4.鍦╯end()鐨勬椂鍊欙紝榪斿洖鐨勬槸瀹為檯鍙戦佸嚭鍘葷殑瀛楄妭(鍚屾)鎴栧彂閫佸埌socket緙撳啿鍖虹殑瀛楄妭
(寮傛);緋葷粺榛樿鐨勭姸鎬佸彂閫佸拰鎺ユ敹涓嬈′負8688瀛楄妭(綰︿負8.5K)錛涘湪瀹為檯鐨勮繃紼嬩腑鍙戦佹暟鎹?br>鍜屾帴鏀舵暟鎹噺姣旇緝澶э紝鍙互璁劇疆socket緙撳啿鍖猴紝鑰岄伩鍏嶄簡send(),recv()涓嶆柇鐨勫驚鐜敹鍙戯細
// 鎺ユ敹緙撳啿鍖?br>int nRecvBuf=32*1024;//璁劇疆涓?2K
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
//鍙戦佺紦鍐插尯
int nSendBuf=32*1024;//璁劇疆涓?2K
setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(int));
5. 濡傛灉鍦ㄥ彂閫佹暟鎹殑鏃訛紝甯屾湜涓嶇粡鍘嗙敱緋葷粺緙撳啿鍖哄埌socket緙撳啿鍖虹殑鎷瘋礉鑰屽獎鍝?br>紼嬪簭鐨勬ц兘錛?br>int nZero=0;
setsockopt(socket錛孲OL_S0CKET,SO_SNDBUF錛?char *)&nZero,sizeof(nZero));
6.鍚屼笂鍦╮ecv()瀹屾垚涓婅堪鍔熻兘(榛樿鎯呭喌鏄皢socket緙撳啿鍖虹殑鍐呭鎷瘋礉鍒扮郴緇熺紦鍐插尯)錛?br>int nZero=0;
setsockopt(socket錛孲OL_S0CKET,SO_RCVBUF錛?char *)&nZero,sizeof(int));
7.涓鑸湪鍙戦乁DP鏁版嵁鎶ョ殑鏃跺欙紝甯屾湜璇ocket鍙戦佺殑鏁版嵁鍏鋒湁騫挎挱鐗規э細
BOOL bBroadcast=TRUE;
setsockopt(s,SOL_SOCKET,SO_BROADCAST,(const char*)&bBroadcast,sizeof(BOOL));
8.鍦╟lient榪炴帴鏈嶅姟鍣ㄨ繃紼嬩腑錛屽鏋滃浜庨潪闃誨妯″紡涓嬬殑socket鍦╟onnect()鐨勮繃紼嬩腑鍙?br>浠ヨ緗甤onnect()寤舵椂,鐩村埌accpet()琚懠鍙?鏈嚱鏁拌緗彧鏈夊湪闈為樆濉炵殑榪囩▼涓湁鏄捐憲鐨?br>浣滅敤錛屽湪闃誨鐨勫嚱鏁拌皟鐢ㄤ腑浣滅敤涓嶅ぇ)
BOOL bConditionalAccept=TRUE;
setsockopt(s,SOL_SOCKET,SO_CONDITIONAL_ACCEPT,(const char*)&bConditionalAccept,sizeof(BOOL));
9.濡傛灉鍦ㄥ彂閫佹暟鎹殑榪囩▼涓?send()娌℃湁瀹屾垚錛岃繕鏈夋暟鎹病鍙戦?鑰岃皟鐢ㄤ簡closesocket(),浠ュ墠鎴戜滑
涓鑸噰鍙栫殑鎺柦鏄?浠庡鍏抽棴"shutdown(s,SD_BOTH),浣嗘槸鏁版嵁鏄偗瀹氫涪澶變簡錛屽浣曡緗紼嬪簭婊¤凍鍏蜂綋
搴旂敤鐨勮姹?鍗寵娌″彂瀹岀殑鏁版嵁鍙戦佸嚭鍘誨悗鍦ㄥ叧闂璼ocket)錛?br>struct linger {
u_short l_onoff;
u_short l_linger;
};
linger m_sLinger;
m_sLinger.l_onoff=1;//(鍦╟losesocket()璋冪敤,浣嗘槸榪樻湁鏁版嵁娌″彂閫佸畬姣曠殑鏃跺欏璁擱楃暀)
// 濡傛灉m_sLinger.l_onoff=0;鍒欏姛鑳藉拰2.)浣滅敤鐩稿悓;
m_sLinger.l_linger=5;//(瀹硅閫楃暀鐨勬椂闂翠負5縐?
setsockopt(s,SOL_SOCKET,SO_LINGER,(const char*)&m_sLinger,sizeof(linger));
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
璁劇疆濂楁帴鍙g殑閫夐」銆?br>
#include <winsock.h>
int PASCAL FAR setsockopt( SOCKET s, int level, int optname,
const char FAR* optval, int optlen);
s錛氭爣璇嗕竴涓鎺ュ彛鐨勬弿榪板瓧銆?br> level錛氶夐」瀹氫箟鐨勫眰嬈★紱鐩墠浠呮敮鎸丼OL_SOCKET鍜孖PPROTO_TCP灞傛銆?br> optname錛氶渶璁劇疆鐨勯夐」銆?br> optval錛氭寚閽堬紝鎸囧悜瀛樻斁閫夐」鍊肩殑緙撳啿鍖恒?br> optlen錛歰ptval緙撳啿鍖虹殑闀垮害銆?br>
娉ㄩ噴錛?br> setsockopt()鍑芥暟鐢ㄤ簬浠繪剰綾誨瀷銆佷換鎰忕姸鎬佸鎺ュ彛鐨勮緗夐」鍊箋傚敖綆″湪涓嶅悓鍗忚灞備笂瀛樺湪閫夐」錛屼絾鏈嚱鏁頒粎瀹氫箟浜嗘渶楂樼殑“濂楁帴鍙?#8221;灞傛涓婄殑閫夐」銆傞夐」褰卞搷濂楁帴鍙g殑鎿嶄綔錛岃濡傚姞鎬ユ暟鎹槸鍚﹀湪鏅氭暟鎹祦涓帴鏀訛紝騫挎挱鏁版嵁鏄惁鍙互浠庡鎺ュ彛鍙戦佺瓑絳夈?br> 鏈変袱縐嶅鎺ュ彛鐨勯夐」錛氫竴縐嶆槸甯冨皵鍨嬮夐」錛屽厑璁告垨紱佹涓縐嶇壒鎬э紱鍙︿竴縐嶆槸鏁村艦鎴栫粨鏋勯夐」銆傚厑璁鎬竴涓竷灝斿瀷閫夐」錛屽垯灝唎ptval鎸囧悜闈為浂鏁村艦鏁幫紱紱佹涓涓夐」optval鎸囧悜涓涓瓑浜庨浂鐨勬暣褰㈡暟銆傚浜庡竷灝斿瀷閫夐」錛宱ptlen搴旂瓑浜巗izeof(int)錛涘鍏朵粬閫夐」錛宱ptval鎸囧悜鍖呭惈鎵闇閫夐」鐨勬暣褰㈡暟鎴栫粨鏋勶紝鑰宱ptlen鍒欎負鏁村艦鏁版垨緇撴瀯鐨勯暱搴︺係O_LINGER閫夐」鐢ㄤ簬鎺у埗涓嬭堪鎯呭喌鐨勮鍔細濂楁帴鍙d笂鏈夋帓闃熺殑寰呭彂閫佹暟鎹紝涓攃losesocket()璋冪敤宸叉墽琛屻傚弬瑙乧losesocket()鍑芥暟涓叧浜嶴O_LINGER閫夐」瀵筩losesocket()璇箟鐨勫獎鍝嶃傚簲鐢ㄧ▼搴忛氳繃鍒涘緩涓涓猯inger緇撴瀯鏉ヨ緗浉搴旂殑鎿嶄綔鐗規э細
struct linger {
int l_onoff;
int l_linger;
};
涓轟簡鍏佽SO_LINGER錛屽簲鐢ㄧ▼搴忓簲灝唋_onoff璁句負闈為浂錛屽皢l_linger璁句負闆舵垨闇瑕佺殑瓚呮椂鍊鹼紙浠ョ涓哄崟浣嶏級錛岀劧鍚庤皟鐢?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">setsockopt()銆備負浜嗗厑璁窼O_DONTLINGER錛堜害鍗崇姝O_LINGER錛夛紝l_onoff搴旇涓洪浂錛岀劧鍚庤皟鐢?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">setsockopt()銆?br> 緙虹渷鏉′歡涓嬶紝涓涓鎺ュ彛涓嶈兘涓庝竴涓凡鍦ㄤ嬌鐢ㄤ腑鐨勬湰鍦板湴鍧鎹嗙粦錛堝弬瑙乥ind()錛夈備絾鏈夋椂浼氶渶瑕?#8220;閲嶇敤”鍦板潃銆傚洜涓烘瘡涓涓繛鎺ラ兘鐢辨湰鍦板湴鍧鍜岃繙绔湴鍧鐨勭粍鍚堝敮涓紜畾錛屾墍浠ュ彧瑕佽繙绔湴鍧涓嶅悓錛屼袱涓鎺ュ彛涓庝竴涓湴鍧鎹嗙粦騫舵棤澶х銆備負浜嗛氱煡WINDOWS濂楁帴鍙e疄鐜頒笉瑕佸洜涓轟竴涓湴鍧宸茶涓涓鎺ュ彛浣跨敤灝變笉璁╁畠涓庡彟涓涓鎺ュ彛鎹嗙粦錛屽簲鐢ㄧ▼搴忓彲鍦╞ind()璋冪敤鍓嶅厛璁劇疆SO_REUSEADDR閫夐」銆傝娉ㄦ剰浠呭湪bind()璋冪敤鏃惰閫夐」鎵嶈瑙i噴錛涙晠姝ゆ棤闇錛堜絾涔熸棤瀹籌級灝嗕竴涓笉浼氬叡鐢ㄥ湴鍧鐨勫鎺ュ彛璁劇疆璇ラ夐」錛屾垨鑰呭湪bind()瀵硅繖涓垨鍏朵粬濂楁帴鍙f棤褰卞搷鎯呭喌涓嬭緗垨娓呴櫎榪欎竴閫夐」銆?br> 涓涓簲鐢ㄧ▼搴忓彲浠ラ氳繃鎵撳紑SO_KEEPALIVE閫夐」錛屼嬌寰梂INDOWS濂楁帴鍙e疄鐜板湪TCP榪炴帴鎯呭喌涓嬪厑璁鎬嬌鐢?#8220;淇濇寔媧誨姩”鍖呫備竴涓猈INDOWS濂楁帴鍙e疄鐜板茍涓嶆槸蹇呴渶鏀寔“淇濇寔媧誨姩”錛屼絾鏄鏋滄敮鎸佺殑璇濓紝鍏蜂綋鐨勮涔夊皢涓庡疄鐜版湁鍏籌紝搴旈伒瀹圧FC1122“Internet涓繪満瑕佹眰錛嶉氳灞?#8221;涓4.2.3.6鑺傜殑瑙勮寖銆傚鏋滄湁鍏寵繛鎺ョ敱浜?#8220;淇濇寔媧誨姩”鑰屽け鏁堬紝鍒欒繘琛屼腑鐨勪換浣曞璇ュ鎺ュ彛鐨勮皟鐢ㄩ兘灝嗕互WSAENETRESET閿欒榪斿洖錛屽悗緇殑浠諱綍璋冪敤灝嗕互WSAENOTCONN閿欒榪斿洖銆?br> TCP_NODELAY閫夐」紱佹Nagle綆楁硶銆侼agle綆楁硶閫氳繃灝嗘湭紜鐨勬暟鎹瓨鍏ョ紦鍐插尯鐩村埌钃勮凍涓涓寘涓璧峰彂閫佺殑鏂規硶錛屾潵鍑忓皯涓繪満鍙戦佺殑闆剁灝忔暟鎹寘鐨勬暟鐩備絾瀵逛簬鏌愪簺搴旂敤鏉ヨ錛岃繖縐嶇畻娉曞皢闄嶄綆緋葷粺鎬ц兘銆傛墍浠CP_NODELAY鍙敤鏉ュ皢姝ょ畻娉曞叧闂傚簲鐢ㄧ▼搴忕紪鍐欒呭彧鏈夊湪紜垏浜嗚В瀹冪殑鏁堟灉騫剁‘瀹為渶瑕佺殑鎯呭喌涓嬶紝鎵嶈緗甌CP_NODELAY閫夐」錛屽洜涓鴻緗悗瀵圭綉緇滄ц兘鏈夋槑鏄劇殑璐熼潰褰卞搷銆俆CP_NODELAY鏄敮涓浣跨敤IPPROTO_TCP灞傜殑閫夐」錛屽叾浠栨墍鏈夐夐」閮戒嬌鐢⊿OL_SOCKET灞傘?br> 濡傛灉璁劇疆浜哠O_DEBUG閫夐」錛學INDOWS濂楁帴鍙d緵搴斿晢琚紦鍔憋紙浣嗕笉鏄繀闇錛夋彁渚涜緭鍑虹浉搴旂殑璋冭瘯淇℃伅銆備絾浜х敓璋冭瘯淇℃伅鐨勬満鍒朵互鍙婅皟璇曚俊鎭殑褰㈠紡宸茶秴鍑烘湰瑙勮寖鐨勮璁鴻寖鍥淬?br> setsockopt()鏀寔涓嬪垪閫夐」銆傚叾涓?#8220;綾誨瀷”琛ㄦ槑optval鎵鎸囨暟鎹殑綾誨瀷銆?br>閫夐」 綾誨瀷 鎰忎箟
SO_BROADCAST BOOL 鍏佽濂楁帴鍙d紶閫佸箍鎾俊鎭?br>SO_DEBUG BOOL 璁板綍璋冭瘯淇℃伅銆?br>SO_DONTLINER BOOL 涓嶈鍥犱負鏁版嵁鏈彂閫佸氨闃誨鍏抽棴鎿嶄綔銆傝緗湰閫夐」鐩稿綋浜庡皢SO_LINGER鐨刲_onoff鍏冪礌緗負闆躲?br>SO_DONTROUTE BOOL 紱佹閫夊緞錛涚洿鎺ヤ紶閫併?br>SO_KEEPALIVE BOOL 鍙戦?#8220;淇濇寔媧誨姩”鍖呫?br>SO_LINGER struct linger FAR* 濡傚叧闂椂鏈夋湭鍙戦佹暟鎹紝鍒欓楃暀銆?br>SO_OOBINLINE BOOL 鍦ㄥ父瑙勬暟鎹祦涓帴鏀跺甫澶栨暟鎹?br>SO_RCVBUF int 涓烘帴鏀剁‘瀹氱紦鍐插尯澶у皬銆?br>SO_REUSEADDR BOOL 鍏佽濂楁帴鍙e拰涓涓凡鍦ㄤ嬌鐢ㄤ腑鐨勫湴鍧鎹嗙粦錛堝弬瑙乥ind()錛夈?br>SO_SNDBUF int 鎸囧畾鍙戦佺紦鍐插尯澶у皬銆?br>TCP_NODELAY BOOL 紱佹鍙戦佸悎騫剁殑Nagle綆楁硶銆?br>
setsockopt()涓嶆敮鎸佺殑BSD閫夐」鏈夛細
閫夐」鍚? 綾誨瀷 鎰忎箟
SO_ACCEPTCONN BOOL 濂楁帴鍙e湪鐩戝惉銆?br>SO_ERROR int 鑾峰彇閿欒鐘舵佸茍娓呴櫎銆?br>SO_RCVLOWAT int 鎺ユ敹浣庣駭姘村嵃銆?br>SO_RCVTIMEO int 鎺ユ敹瓚呮椂銆?br>SO_SNDLOWAT int 鍙戦佷綆綰ф按鍗般?br>SO_SNDTIMEO int 鍙戦佽秴鏃躲?br>SO_TYPE int 濂楁帴鍙g被鍨嬨?br>IP_OPTIONS 鍦↖P澶翠腑璁劇疆閫夐」銆?br>
榪斿洖鍊鹼細
鑻ユ棤閿欒鍙戠敓錛?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">setsockopt()榪斿洖0銆傚惁鍒欑殑璇濓紝榪斿洖SOCKET_ERROR閿欒錛屽簲鐢ㄧ▼搴忓彲閫氳繃WSAGetLastError()鑾峰彇鐩稿簲閿欒浠g爜銆?br>
閿欒浠g爜錛?br> WSANOTINITIALISED錛氬湪浣跨敤姝PI涔嬪墠搴旈鍏堟垚鍔熷湴璋冪敤WSAStartup()銆?br> WSAENETDOWN錛歐INDOWS濂楁帴鍙e疄鐜版嫻嬪埌緗戠粶瀛愮郴緇熷け鏁堛?br> WSAEFAULT錛歰ptval涓嶆槸榪涚▼鍦板潃絀洪棿涓殑涓涓湁鏁堥儴鍒嗐?br> WSAEINPROGRESS錛氫竴涓樆濉炵殑WINDOWS濂楁帴鍙h皟鐢ㄦ鍦ㄨ繍琛屼腑銆?br> WSAEINVAL錛歭evel鍊奸潪娉曪紝鎴杘ptval涓殑淇℃伅闈炴硶銆?br> WSAENETRESET錛氬綋SO_KEEPALIVE璁劇疆鍚庤繛鎺ヨ秴鏃躲?br> WSAENOPROTOOPT錛氭湭鐭ユ垨涓嶆敮鎸侀夐」銆傚叾涓紝SOCK_STREAM綾誨瀷鐨勫鎺ュ彛涓嶆敮鎸丼O_BROADCAST閫夐」錛孲OCK_DGRAM綾誨瀷鐨勫鎺ュ彛涓嶆敮鎸丼O_DONTLINGER 銆丼O_KEEPALIVE銆丼O_LINGER鍜孲O_OOBINLINE閫夐」銆?br> WSAENOTCONN錛氬綋璁劇疆SO_KEEPALIVE鍚庤繛鎺ヨ澶嶄綅銆?br> WSAENOTSOCK錛氭弿榪板瓧涓嶆槸涓涓鎺ュ彛銆?br>
鍙傝錛?br> bind(), getsockopt(), ioctlsocket(), socket(), WSAAsyncSelect().
copy from:http://blog.csdn.net/qinmi/archive/2007/03/07/1523081.aspx
涓銆?UPnP鏄敤鏉ュ共浠涔堢殑錛?/p>
緗戠粶鍙戝睍鍒扮幇鍦紝宸茬粡鍙互浣挎垜浠湪緗戜笂鍐叉氮銆佹敹鍙戦偖浠躲佸惉鍒拌繙鏂逛紶閫佹潵鐨勫0闊熾佹悳绱㈡劅鍏磋叮鐨勫唴瀹廣佷笅杞借蔣浠躲佺偣鎾妭鐩佸嵆鏃惰亰澶?#8230;…瀹炵幇鐨勫姛鑳藉ソ鍍忓凡緇忎笉灝戯紝浣嗭紝浜虹殑嬈叉湜鏃犳澧冿紝浜浜鴻繕鎯蟲洿浜錛岃繕鏈夎澶氱洰鏍囨病鏈夎揪鍒幫細渚嬪錛屾庢牱鎵嶈兘浣挎垜浠湪緗戠粶涓婏紝鍍忓鉤鏃剁敤閬ユ帶鍣ㄩ偅鏍鳳紝鎿嶄綔絀鴻皟鍣ㄣ佺數椋庢墖銆佸帹鎴跨數鍣紝鎴栫綉緇滆繙绔殑鐢靛櫒璁懼鍛紵濡備綍鍒╃敤緗戠粶涓婄殑璁$畻鏈鴻祫婧愶紝浣胯繖縐?#8220;閬ユ帶”鏇村叿鏅鴻兘鍖栵紵鐢氳嚦錛屽皢涓緋誨垪鐩稿叧鐨勬帶鍒跺啓鍒頒竴涓剼鏈腑錛屼互渚跨敤鎴峰畾鍒惰嚜宸辨墍鍠滅埍鐨勬帶鍒舵祦紼?#8230;…瀹炵幇璇稿姝ょ被鐨勬晥鏋滐紝灝嗘槸鏈夊法澶ч渶姹傜殑搴旂敤鎶鏈傚鏋滃疄鐜伴氳繃緗戠粶鐢║PnP鎺у埗瀹剁敤璁懼錛屽皢緇欐垜浠殑鐢熸椿甯︽潵寰堝ぇ鐨勬柟渚垮拰寰堝鏂扮殑浣撻獙銆備緥濡傦細
1.浣犲湪涓嬬彮涔嬪墠錛屾垨鍦ㄥ洖鍘葷殑璺笂錛屽氨鍙互鍏堟墦寮瀹墮噷鐨勭┖璋冨櫒鍜屽帹鎴胯澶囷紝絳夎繘鍏ュ闂紝绔嬪埢灝辨槸涓涓俯搴﹀疁浜虹殑鐜鈥曗曞帹鎴塊噷鐨勯キ涔熷仛濂戒簡銆傛埧闂存俯搴︾殑楂樹綆鍜屽帹鎴垮唴鐓キ鐨勮繃紼嬶紝閮芥槸鏍規嵁浜嬪厛璁捐濂界殑“鑴氭湰”紼嬪簭榪涜鐨勶紝緇濆鍙潬銆?/p>
2.浣犺嫢鏄竴浣嶄笂妗f鐨勯煶涔愬彂鐑ц咃紝鑲畾瀵硅亞鍚煶涔愮殑鐜瑕佹眰寰堜弗錛氶煶綆變綅緗珮浣庛侀煶閲忓ぇ灝忋佺伅鍏夋槑鏆椼佺獥甯樻媺涓嶆媺涓婇兘鏈夎絀躲傛墜鍔ㄦ帶鍒墮殢濂斤紝姣曠珶涓嶆柟渚褲備綘瑕佷嬌鐢ㄤ笂UPnP錛屼竴鍒囬兘浼氫負浣犱唬鍔熾傝繕鑳藉皢浣犱範鎯殑闊沖搷闊抽噺銆佺伅鍏変寒搴︺侀煶綆辯殑楂樺害絳夌瓑錛屼互浣犺涓烘渶浣崇殑鍙傛暟鍐欏埌鎵ц鑴氭湰涓紝浠ュ悗鍙互閮戒互姝や負鍑嗐傚鏋滀綘鎷ユ湁鑷繁鐨勪笓闂ㄥ惉闊沖錛屽彧瑕佷綘鎵撳紑鍚煶瀹ょ殑闂紝涓婅堪鐨勭幆澧冨氨浼氱珛鍒昏緗ソ銆傛洸緇堜漢鏁o紝鍙鏀懼績紱誨紑濂戒簡錛孶PnP緋葷粺浼氳嚜宸卞叧闂煶鍝嶏紝鐔勭伃鐢電伅錛屾媺涓婄獥甯樸?/p>
3.浣犱漢鍦ㄥ姙鍏錛屽績閲屽嵈鏀句笉涓嬪閲岀殑瀛╁瓙銆傜敤涓奤PnP錛屽彧瑕佸湪瀹墮噷瀹夎鎽勫儚澶達紝寤虹珛濂戒笌緗戠粶鐨勮繛鎺ャ傚湪鍔炲叕瀹ゅ唴錛屽惎鐢ㄦ闈㈢數鑴戠殑WEBTV錛岃繛閫氱綉緇滃悗錛屽彲浠ュ嵆鏃剁洃瑙嗗瀛愬湪瀹墮噷鐨勪竴涓句竴鍔ㄣ?/p>
鍑℃縐嶇鐨勬柟渚垮拰璇變漢涔嬪榪樺緢澶氾紝涓嶈儨鏋氫婦銆?/p>
鍏跺疄錛岃繖宸茬粡涓嶆槸縐戝騫繪兂銆佷篃涓嶆槸涓撳棰勮█銆傜洰鍓嶇敤UPnP鍗忚灝卞彲浠ュ疄鐜拌繖浜涙搷浣滐紒榪欐鏄痺indows xp緋葷粺鎬ヤ簬鍔犲叆UPnP鐨勫師鍥犮傛鍥犱負UPnP鏄竴涓崗璁紝UPnP鐨勪嬌鐢ㄥ彲璺ㄨ秺鍚勭鎿嶄綔緋葷粺騫沖彴錛屽紑鍙戝簲鐢ㄧ▼搴忎篃娌℃湁寮鍙戣璦鐨勫眬闄愩傚彲宸ヤ綔浜庡悇縐嶅艦寮忕殑緗戠粶緇撴瀯銆備笖浠呬互鐜板湪鐨勭綉緇滆鏂戒負鍩虹錛屼粎浠呭姞涓婅繖涓猆PnP鍗忚錛屾棦涓嶇敤娣誨姞鏂扮殑璁炬柦錛屼篃涓嶇敤閲嶆柊鏋惰緗戠粶浠嬭川灝卞彲浠ユ姇鍏ヤ嬌鐢紒
UPnP鍗忚鍏鋒湁涓嬭堪鐗硅壊錛?/p>
1. 浠ョ綉緇滀負搴旂敤鐜錛屼笉鑰冭檻“瀛ゅ矝”涓殑璁$畻鏈恒?/p>
2. 浠CP/IP鍜屾暣涓狪nternet涓哄熀紜銆傝繖鏍鋒槸“涓珛”鐨勶紝涓嶄緷闄勪簬浠諱綍鎿嶄綔緋葷粺鎴栧簲鐢ㄧ▼搴忥紝涓嶄嬌鐢ㄧ壒瀹氱殑API鍑芥暟錛屼笉鍙楃▼搴忚璁¤璦鐨勫眬闄愩傚彲浠ユ棤緙濆湴鎺ュ叆浼犵粺緗戠粶銆?/p>
3. 璁懼鍙互鍔ㄦ佸湴榪涘叆緗戠粶涓紝闅忓悗鑾峰緱IP鍦板潃錛?#8220;瀛︿範” 鎴栨煡鎵捐嚜宸卞簲褰撹繘琛岀殑鎿嶄綔鍜屾湇鍔$殑淇℃伅錛?#8220;鎰熺煡”鍒殑璁懼鏄惁瀛樺湪浠ュ強瀹冧滑鐨勪綔鐢ㄥ拰褰撳墠鐨勭姸鎬?銆傛墍鏈夎繖浜涳紝閮藉簲褰撴槸鍙嚜鍔ㄥ畬鎴愮殑銆?/p>
4. 姣忎釜璁懼閮藉彲璇誨彇灞炰簬鑷繁鐨勩佺壒瀹氱殑鐘舵佸拰鍙傛暟錛涘畬鎴愭帶鍒舵搷浣滃悗搴斿綋鍙戝嚭“鎿嶄綔瀹屾垚”鐨勫搷搴斾俊鍙楓傚鏋滃け璐ワ紝鍒欏簲鍙戝嚭鎺у埗澶辮觸鐨勪俊鍙楓?/p>
浜屻乁PnP鍗忚鐨勫眰錛?/p>
UPnP鍗忚鐨勬渶緇堢洰鐨勶紝鏄緩绔嬩竴涓彲鐢ㄧ殑璁懼妯″瀷錛?鍥犵瘒騫呰繖閲屼笉瀵規暣涓粨鏋勮繘琛岃緇嗙殑鍒嗘瀽錛屼絾浣犲簲褰撹浣忎笅闈㈢殑涓昏鐗瑰緛錛?/p>
1. UPnP鏄竴涓灞傚崗璁瀯鎴愮殑妗嗘灦浣撶郴錛屾瘡涓灞傞兘浠ョ浉閭葷殑涓嬪眰涓哄熀紜錛屽悓鏃跺張鏄浉閭諱笂灞傜殑鍩虹銆傜洿鑷寵揪鍒板簲鐢ㄥ眰涓烘銆傝鍥句腑鐨勬渶涓嬮潰鏄氨鏄疘P鍜孴CP錛屽叡涓ゅ眰錛岃礋璐h澶囩殑IP鍦板潃銆?/p>
2. 涓夊眰鏄疕TTP銆丠TTPU銆丠TTPMU錛岃繖涓灞傦紝澶у搴斿綋鏄啛鎮夌殑錛屽睘浜庝紶閫佸崗璁眰銆備紶閫佺殑鏄唴瀹歸兘緇忚繃“灝佽”鍚庯紝瀛樻斁鍦ㄧ壒瀹氱殑XML鏂囦歡涓殑銆傚搴旂殑SSDP銆丟ENA銆丼OAP鎸囩殑鏄繚瀛樺湪XML鏂囦歡涓殑鏁版嵁鏍煎紡銆傚埌榪欎竴灞傦紝宸茬粡瑙e喅浜哢PnP璁懼鐨処P鍦板潃鍜屼紶閫佷俊鎭棶棰樸?/p>
3. 絎洓灞傛槸UPnP璁懼浣撶郴瀹氫箟錛屼粎浠呮槸涓涓娊璞$殑銆佸叕鐢ㄧ殑璁懼妯″瀷銆備換浣昒PnP璁懼閮藉繀欏諱嬌鐢ㄨ繖涓灞傘?/p>
4. 絎簲灞傛槸UPnP璁哄潧鐨勫悇涓笓涓氬鍛樹細鐨勮澶囧畾涔夊眰錛屽湪榪欎釜璁哄潧涓紝涓嶅悓鐢靛櫒璁懼鐢變笉鍚岀殑涓撲笟濮斿憳浼氬畾涔夛紝渚嬪錛氱數瑙嗗鍛樹細鍙礋璐e畾涔夌綉緇滅數瑙嗚澶囬儴鍒嗭紝絀鴻皟鍣ㄥ鍛樹細鍙礋璐e畾涔夌綉緇滅┖璋冭澶囬儴鍒?#8230;…渚濇綾繪帹銆傛墍鏈夌殑涓嶅悓綾誨瀷鐨勮澶囬兘琚畾涔夋垚涓涓笓闂ㄧ殑鏋舵瀯鎴栬呮ā鏉匡紝渚涘緩绔嬭澶囩殑鏃跺欎嬌鐢ㄣ傚彲浠ユ帹鐭ワ紝榪涘叆榪欎竴灞傦紝璁懼宸茬粡琚寚瀹氫簡鏄庣‘鐢ㄩ斻傚綋鐒訛紝榪欎簺閮藉繀欏婚伒瀹堟爣鍑嗗寲鐨勮鑼冦備粠鐩墠鐪嬶紝UPnP宸茬粡鍙互鏀寔澶ч儴鍒嗙殑璁懼錛氫粠鐢佃剳銆佺數鑴戝璁撅紝縐誨姩璁懼鍜屽鐢ㄦ秷璐圭被鐢靛瓙璁懼絳夌瓑錛屾棤鎵涓嶅寘錛岄殢鐫榪欎釜浣撶郴鐨勬櫘鍙婏紝灝嗗彲鑳芥湁鏇村鐨勫巶瀹舵壙璁よ繖涓鏍囧噯錛屾渶緇堬紝鍙兘婕斿寲涓哄叕璁ょ殑琛屼笟鏍囧噯銆?/p>
5. 鏈涓婂眰錛屼篃灝辨槸搴旂敤灞傦紝鐢盪PnP璁懼鍒墮犲巶鍟嗗畾涔夌殑閮ㄥ垎銆傝繖涓灞傜殑淇℃伅鏄敱璁懼鍒墮犲巶鍟嗘潵“濉厖” 鐨勶紝榪欓儴鍒嗕竴鑸湁璁懼鍘傚晢鎻愪緵鐨勩佸璁懼鎺у埗鍜屾搷浣滅殑搴曞眰浠g爜錛岀劧鍚庯紝灝辨槸鍚嶇О搴忓垪鍙峰憖錛屽巶鍟嗕俊鎭箣綾葷殑涓滆タ銆?/p>
涓夈佸崗璁唴閮ㄧ殑璇︾粏鎯呭喌
浠呬粎鏈夎繖鏍蜂簲灞俇PnP鍗忚錛屼篃鍙笉榪囨湁浜嗕竴涓叡鍚岄伒瀹堢殑妗嗘灦錛屽疄闄呯殑UPnP緋葷粺絀剁珶鏄浣曟瀯鎴愮殑鍛紵
瀹屾暣鐨刄PnP鏈嶅姟緋葷粺鐢辨敮鎸乁PnP鐨勭綉緇滃拰絎﹀悎UPnP瑙勮寖鐨勮澶囧叡鍚屾瀯鎴愮殑銆?/p>
鏁翠釜緋葷粺鏄敱璁懼銆佹湇鍔°佸拰鎺у埗鎸囬拡涓夐儴鍒嗘墍鏋勬垚銆?/p>
璁懼錛?/p>
榪欓噷鏄寚絎﹀悎UPnP瑙勮寖鐨勮澶囥備竴涓猆PnP璁懼鍙互鐪嬫垚涓涓寘鍚湇鍔″茍宓屽浜嗗父瑙勮澶囩殑“瀹瑰櫒” 銆備緥濡傦紝涓涓猆PnP鐨刅CR錛堝綍鍍忔満錛夎澶囧彲浠ュ寘鍚甯︿紶閫佹湇鍔°佽皟璋愭湇鍔″拰鏃墮挓鏈嶅姟銆傚氨鏄錛孶PnP涔嬩笅鐨勮澶囦笉鑳戒粎浠呯悊瑙d負紜歡鎰忎箟涓婄殑璁懼錛岃屽簲褰撳寘鎷湇鍔″姛鑳姐?/p>
涓嶅悓縐嶇被鐨刄PnP璁懼灝嗗叧鑱斾笉鍚岀殑璁劇疆銆佹湇鍔″拰宓屽叆璁懼銆傚鎵撳嵃鏈哄拰VCR灞炰簬涓嶅悓鐢ㄩ旂殑璁懼錛屾湇鍔″氨涓嶅彲鑳藉畾涔夋垚涓鏍風殑銆?/p>
鏈嶅姟錛?/p>
璁懼鎵ц鐢ㄦ埛璇鋒眰鐨勬帶鍒惰繃紼嬶紝鍙垝鍒嗘垚涓涓釜寰堝皬鐨勯樁孌墊垨鍗曚綅錛屾瘡涓崟浣嶅氨縐頒負涓涓湇鍔°傛瘡涓涓湇鍔★紝瀵瑰閮借〃鐜頒負鍏蜂綋鐨勮涓哄拰妯″紡錛岃岃涓哄拰妯″紡鍙堝彲浠ョ敤鐘舵佸拰鍙橀噺鍊艱繘琛屾弿榪般傚彧瑕佸彲浠ョ敤鏁板兼弿榪幫紝鍦ㄨ綆楁満閲岄潰灝卞鏄撳鐞嗕簡銆備緥濡傦紝妯′豢涓涓椂閽燂紝瀹冨彧鏈変竴涓伐浣滄ā寮忥細榪欎釜妯″紡灝辨槸妯℃嫙騫舵樉紺哄綋鍓嶇殑鏃墮棿銆傝屼竴涓椂閽熺殑琛屼負鍏辨湁涓ょ錛堜篃鍙湁涓ょ錛夛細
1. 璁劇疆鏃墮棿錛堢敤鏉?#8220;鍗沖鉤鏃惰鐨勫琛?#8221;錛?
2. 寰楀埌鏃墮棿錛堢敤浜庢樉紺烘椂闂達級銆?/p>
鍏跺畠璁懼鏈嶅姟錛屼篃鏄敤榪欐牱鎬濊礬鏉ユ弿榪板拰瀹氫箟鐨勶紝涓涓澶囦篃鍙互琚畾涔夊涓湇鍔°備笉璁烘槸璁懼鐨勫畾涔変俊鎭拰鏈嶅姟鐨勬弿榪頒俊鎭紝閮戒繚瀛樺湪涓涓猉ML鏂囦歡涓紝榪欎釜鏂囦歡涔熸槸UPnP鍗忚鏋勬垚鐨勪竴閮ㄥ垎銆傚綋璁懼寤虹珛鍜屼嬌鐢ㄦ湇鍔$殑鏃跺欙紝XML鏂囦歡鍙互涓庡畠浠繘琛屽叧鑱斻?/p>
XML鏂囦歡涓繕鏈変竴涓緢鍏抽敭鐨?#8220;鐘舵佽〃”錛岀姸鎬佽〃鍙繘涓姝ュ垎涓?#8220;鏈嶅姟鐘舵佽〃”鍜?#8220;浜嬩歡鐘舵佽〃”銆傛暣涓猆PnP璁懼榪愯鐨勫叏榪囩▼鍐咃紝鐘舵佽〃璐┛濮嬬粓錛屽綋璁懼鐘舵佹敼鍙樼殑鏃跺欙紝渚嬪鍙戠敓鍙傛暟鍙樺寲鎴栫姸鎬佸埛鏂扮殑鏃跺欙紝绔嬪嵆灝卞湪“鐘舵佽〃”涓弽鏄犲嚭鏉ャ傚鎺у埗鏈嶅姟鍣ㄥ湪鎺ユ敹鍒拌緗椂闂寸殑琛屼負璇鋒眰鏃訛紝灝辯珛鍗蟲墽琛岃姹傦紙瀵規椂鎿嶄綔錛夛紝騫剁粰鍑哄搷搴旓紝鍚屾椂鏇存柊鐘舵佽〃涓殑鏈夊叧鏁版嵁銆傜浉搴斿湴錛屼簨浠舵湇鍔″櫒璐熻矗鍚戝姝や簨浠舵劅鍏磋叮鐨勮澶囧叕甯冩墍鍙戠敓鐨勭姸鎬佹敼鍙樸備緥濡傦紝涓涓伀鐏句簨浠跺彂鐢熷悗錛屼簨浠舵湇鍔″櫒灝卞悜鐏伨鎶ヨ鍣ㄥ彂甯冭繖涓簨浠訛紝瀵艱嚧鎶ヨ鍣ㄥ姩浣滀駭鐢熸姤璀︿俊鍙楓?/p>
鎺у埗鎸囬拡錛?/p>
鍦║PnP緗戠粶涓紝鐢ㄦ埛璇鋒眰璁懼鎵ц鐨勬帶鍒舵槸閫氳繃鎺у埗鎸囬拡瀹炵幇鐨勶紝鎺у埗鎸囬拡棣栧厛鏄竴涓湁鑳藉姏鎺у埗鍒殑璁懼鐨勬帶鍒惰咃紝榪樿鍏鋒湁鍦ㄧ綉緇滀腑 “鍙戠幇”鎺у埗鐩爣鐨勮兘鍔涖傚湪鍙戠幇錛堟帶鍒剁洰鏍囷級涔嬪悗錛屾帶鍒舵寚閽堝簲褰擄細
鈶犲彇寰楄澶囩殑鎻忚堪淇℃伅騫跺緱鍒版墍鍏寵仈鐨勬湇鍔″垪琛ㄣ?/p>
鈶″彇寰楃浉鍏蟲湇鍔$殑鎻忚堪銆?/p>
鈶㈣皟鐢ㄦ帶鍒舵湇鍔¤涓恒?/p>
鈶g‘瀹氭湇鍔$殑浜嬩歡 “婧?#8221;錛屼笉璁轟綍鏃訛紝鍙鏈嶅姟鐘舵佸彂鐢熸敼鍙橈紝浜嬩歡鏈嶅姟鍣ㄤ細绔嬪嵆鍚戞帶鍒舵寚閽堝彂閫佷竴涓簨浠朵俊鎭?/p>
浠庝笂闈㈣鍒扮殑鍚勭淇℃伅錛岄兘淇濆瓨鍦╔ML鏂囦歡涓紝涓嶅悓鐢ㄩ旂殑淇℃伅錛屾牸寮忎笉鍚屻備繚璇佸彲浠ュ悇鍙栨墍闇錛屼笉浼氭販娣嗐?/p>
閭d箞錛孶PnP鐨勫畬鏁村伐浣滆繃紼嬫槸鎬庢牱鐨勫憿錛?/p>
UPnP鍦ㄦ帶鍒舵寚閽堝拰琚帶鍒惰澶囦箣闂存彁渚涢氳鍔熻兘銆傝岀綉緇滀粙璐ㄣ乀CP/IP鍗忚銆丠TTP浠呮彁渚涘熀鏈殑榪炴帴鍜孖P鍦板潃鍒嗛厤銆傛暣涓伐浣滆繃紼嬮渶瑕佸鐞嗗叚涓柟闈㈢殑鍐呭錛屽嵆鍦板潃鍒嗛厤銆佸彂鐜拌澶囥佸璁懼鐨勬弿榪般佽澶囨帶鍒躲佽澶囦簨浠躲佽澶囪〃杈俱?/p>
鍦板潃闂錛?/p>
鍦板潃鏄暣涓猆PnP緋葷粺宸ヤ綔鐨勫熀紜鏉′歡錛屾瘡涓澶囬兘搴斿綋鏄疍HCP錛圖ynamic Host Configuration Protocol 鍔ㄦ佷富鏈洪厤緗崗璁級鐨勫鎴楓傚綋璁懼棣栨涓庣綉緇滃緩绔嬭繛鎺ュ悗錛屽埄鐢―HCP鏈嶅姟錛屼嬌璁懼寰楀埌涓涓狪P鍦板潃銆傝繖涓狪P鍦板潃鍙互鏄疍HCP緋葷粺鎸囧畾鐨勶紝涔熷彲浠ユ槸鐢辮澶囬夋嫨鐨勶紝褰撶劧錛屾湁鑳藉姏鑷繁閫夋嫨IP鍦板潃鐨勮澶囷紝蹇呯劧鏄偅浜?#8220;鑱槑”鐨勮澶囨墠琛岋紒榪欎篃灝辨槸鎵璋撶殑“鑷姩”IP鍦板潃銆?/p>
濡傛灉閬囧埌鏈湴DHCP綆$悊鑼冨洿涔嬪鐨処P鍦板潃璇鋒眰錛岃繕闇瑕佽В鍐?#8220;鍙嬪ソ璁懼”
鐨勫湴鍧鍒嗛厤闂錛岃繖涓棶棰橀氬父鐢卞煙鍚嶆湇鍔″櫒鏉ヨВ鍐熾?/p>
鍙戠幇璁懼錛?/p>
鍙垎鎴愪袱縐嶆儏鍐碉紝涓縐嶆槸鍦ㄦ湁鎺у埗璇鋒眰涔嬪悗錛屽湪褰撳墠鐨勭綉緇滀腑鏌ユ壘鏈夋棤瀵瑰簲鐨勫彲鐢ㄨ澶囷紱鍙︿竴縐嶆儏鍐墊槸鏌愪竴璁懼鎺ュ叆緗戠粶銆佸彇寰桰P鍦板潃涔嬪悗錛屽氨寮濮嬪悜緗戠粶“騫挎挱”鑷繁宸茬粡榪涘叆緗戠粶錛屽嵆瀵繪壘鎺у埗璇鋒眰銆?/p>
璁懼鐨勬弿榪幫細
綆鍗曡錛岃繖鏄0鏄?#8220;鑷繁”鏄粈涔堟牱鐨勮澶囷紝渚嬪鍚嶇О銆佸埗閫犲巶鍟嗐佸簭鍒楀彿鐮佺瓑絳夈傚垰寮濮?#8220;鍙戠幇”璁懼鍚庯紝鎺у埗鎸囬拡瀵硅繖涓澶囩殑“浜嗚В”榪樺緢灝戯紝闇瑕佷緷鎹甎LR鎵懼埌璇ヨ澶囩殑鎻忚堪鏂囦歡錛屼粠榪欎簺鏂囦歡涓鍙栨洿澶氱殑鎻忚堪淇℃伅銆傛弿榪頒俊鎭殑鑼冨洿寰堝箍錛屼竴鑸兘鏄敱璁懼鐨勫埗閫犲巶鍟嗘彁渚涚殑銆備富瑕佺殑鎻忚堪欏圭洰鏈夛細鎺у埗鐨勬ā寮忓悕縐板拰妯″紡鍙風爜銆佽澶囧簭鍒楀彿銆佸埗閫犲巶鍟嗗悕縐般佸巶鍟嗙殑WEB鐨刄LR絳夌瓑銆傝繖浜涗竴鑸兘瀛樻斁鍦ㄧ壒瀹氱殑XML鏂囦歡涓紱
璁懼鎺у埗錛?/p>
鎺у埗鎸囬拡鎵懼埌璁懼鎻忚堪涔嬪悗錛屼細浠庢弿榪頒腑“鎻愮偧”鍑鴻榪涜鐨勬搷浣滃茍鑾鋒倝鎵鏈夌殑鏈嶅姟錛涘姣忎釜UPnP璁懼鏉ヨ錛岃繖浜涙弿榪板繀欏繪槸寰堢‘鍒囥佸緢璇︾粏鐨勶紝鎻忚堪涓彲鑳藉寘鍚湁鍛戒護鎴栬涓哄垪琛ㄣ佹湇鍔″搷搴斾俊鎭佺敤鍒扮殑鍙傛暟絳夌瓑銆傚浜庢湇鍔$殑姣忎釜琛屼負錛屼篃浼存湁鎻忚堪淇℃伅錛氫富瑕佹槸鏁翠釜鏈嶅姟榪涜鏈熼棿鐨勫彉閲忋佸彉閲忕殑鏁版嵁綾誨瀷銆佸彲鐢ㄧ殑鍙栧艱寖鍥村拰浜嬩歡鐨勭壒寰併?/p>
瑕佹帶鍒舵煇涓澶囷紝鎺у埗鎸囬拡蹇呴』鍏堝彂閫佷竴涓帶鍒惰涓鴻姹傦紝瑕佹眰璁懼寮濮嬫湇鍔★紝鐒跺悗鍐嶆寜璁懼鐨刄LR鍙戦佺浉搴旂殑鎺у埗娑堟伅錛屾帶鍒舵秷鎭氨鏄斁緗湪XML鏂囦歡涓殑閭d簺SOAP鏍煎紡鐨勪俊鎭傛渶鍚庯紝鏈嶅姟浼氳繑鍥炲搷搴斾俊鎭紝鎸囧嚭鏈嶅姟鏄垚鍔熸垨鏄け璐ャ?/p>
璁懼浜嬩歡錛?/p>
鍦ㄦ湇鍔¤繘琛岀殑鏁翠釜鏃墮棿鍐咃紝鍙鍙橀噺鍊煎彂鐢熶簡鍙樺寲鎴栬呮ā寮忕殑鐘舵佸彂鐢熶簡鏀瑰彉錛屽氨浜х敓浜嗕竴涓簨浠訛紝緋葷粺灝嗕慨鏀逛笂榪版彁鍒扮殑浜嬩歡鍒楄〃鐨勫唴瀹廣傞殢涔嬶紝浜嬩歡鏈嶅姟鍣ㄦ妸浜嬩歡鍚戞暣涓綉緇滆繘琛屽箍鎾傚彟涓鏂歸潰錛屾帶鍒舵寚閽堜篃鍙互浜嬪厛鍚戜簨浠舵湇鍔″櫒棰勭害浜嬩歡淇℃伅錛屼繚璇佸皢璇ユ帶鍒舵寚閽堟劅鍏磋叮鐨勪簨浠跺強鏃跺噯紜湴浼犻佽繃鏉ャ?/p>
騫挎挱鎴栭綰︿簨浠訛紝浼犻佺殑閮芥槸浜嬩歡娑堟伅錛屼簨浠舵秷鎭篃鏀懼湪XML鏂囦歡涓紝浣跨敤鐨勬牸寮忔槸GENA銆?/p>
璁懼鎶曞叆宸ヤ綔涔嬪墠鐨勫噯澶団曗曗曞垵濮嬪寲榪囩▼錛屼篃鏄竴涓簨浠訛紝鍒濆鍖栭渶瑕佺殑鍚勭淇℃伅涔熸槸鐢ㄤ簨浠舵秷鎭紶閫佺殑銆傚寘鎷殑鍐呭涓昏鏄細鍙橀噺鍒濆鍊鹼紝妯″紡鐨勫垵濮嬬姸鎬佺瓑絳夈?/p>
璁懼琛ㄨ揪錛?/p>
鍙寰楀埌浜嗚澶囩殑ULR錛屽氨鍙互鍙栧緱璇ヨ澶囪〃杈鵑〉闈㈢殑ULR錛岀劧鍚庡彲浠ュ皢姝よ〃杈劇撼鍏ョ敤鎴風殑鏈湴嫻忚鍣ㄤ笂銆傝繖閮ㄥ垎榪樺寘鎷笌鐢ㄦ埛瀵硅瘽鐨勭晫闈紝浠ュ強涓庣敤鎴瘋繘琛屼細璇濈殑澶勭悊銆?/p>
鏁翠釜UPnP緋葷粺錛屾槸鍦?#8220;涓灑紲炵粡”鐨勬寚鎸ヤ笅鍗忓悓宸ヤ綔鐨勩傚叾澶ц嚧鎯呭艦濡備笅錛?/p>
鍑℃槸鍏峰IP鍦板潃鐨勭殑璁懼閮藉繀欏葷洿鎺ヤ嬌鐢ㄧ綉緇滅殑IP鍦板潃錛屼絾鏈変簺璁懼鍙兘騫朵笉鍏峰鐩存帴浣跨敤緗戠粶IP鍦板潃鐨勮兘鍔涳紝渚嬪錛岀數鐏紑鍏崇殑鎺у埗灝辨槸榪欐牱錛岃繖鏄潪IP璁懼錛涢潪IP璁懼閫氳繃緗戞ˉ錛圲PnP Bridge錛夋潵涓庢帶鍒舵寚閽堜氦鎹俊鎭?/p>
鐩存帴浣跨敤IP鍦板潃鐨勬湁錛氭帶鍒舵寚閽堬紙鍙湪鍙h鐢佃剳鍜岃繙紼嬭澶囦笂鍙戝嚭鎺у埗錛夈佹湰鍦拌澶囷紝渚嬪VCR鍜屾椂閽燂紱浠ュ強緗戞ˉ銆傞潪IP璁懼鏈夋墍璋撹交璁懼錛堝娓╁害鎺у埗鍣級鍜岄潪UPnP鐨勮澶囷紙濡傜數鐏帶鍒跺紑鍏崇瓑錛夈?/p>
涓婅堪浠嬬粛灞炰簬紜歡鏂歸潰錛屼笅闈㈠啀璇翠綔涓烘帶鍒剁伒欖傜殑杞歡錛?/p>
鍦ㄤ笂闈㈢殑鍙欒堪涓紝澶氭鎻愬埌鐢╔ML鏂囦歡瀛樻斁闇瑕佺殑淇℃伅錛屽洜涓烘棤璁烘槸鎺у埗鎸囬拡鎴栬澶囨湇鍔★紝閮介渶瑕佸緢澶氫俊鎭紝鏈夎鍑虹殑錛屾湁浼犲嚭鐨勶紝UPnP鍗忚綰﹀畾榪欎簺閮藉瓨鏀懼湪鐗瑰畾鐨勬枃浠禭ML涓傜敤閫斾笉鍚岀殑淇℃伅錛屽湪XML鏂囦歡涓殑鏍煎紡涓嶅悓銆傛墍浠ワ紝鐩稿叧鐨刋ML鏂囦歡鏄帶鍒舵湇鍔$殑鐏甸瓊銆?/p>
鍥涖佸叧浜嶶PnP闅愯棌鐨勫畨鍏ㄧ己緙洪櫡錛?/p>
榪欐鍙戠幇鐨勫畨鍏ㄧ己闄峰叡鏈変袱涓紝鍏朵腑絎竴涓己闄鋒槸瀵圭紦鍐插尯錛圔uffer錛夌殑浣跨敤娌℃湁榪涜媯鏌ュ拰闄愬埗銆傚閮ㄧ殑鏀誨嚮鑰咃紝鍙互閫氳繃榪欓噷鍙栧緱鏁翠釜緋葷粺鐨勬帶鍒剁壒鏉冿紒鐢變簬UPnp鍔熻兘蹇呴』浣跨敤璁$畻鏈虹殑绔彛鏉ヨ繘琛屽伐浣滐紝鍙栧緱鎺у埗鏉冪殑鏀誨嚮鑰咃紝榪樻湁鍙兘鍒╃敤榪欎簺绔彛錛岃揪鍒版敾鍑昏呯殑鐩殑銆傝繖涓己闄峰鑷寸殑鍚庢灉寰堜弗閲嶏紝涓嶈閭d釜鐗堟湰鐨剋indows 緋葷粺錛屽彧瑕佽繍琛孶PnP錛屽氨閮藉瓨鍦ㄨ繖涓嵄闄╋紒浣嗕弗鏍煎湴璇達紝榪欏茍涓嶅畬鍏ㄦ槸UPnP鎶鏈湰韜殑闂錛屾洿澶氱殑鏄▼搴忚璁$殑鐤忓拷銆?/p>
絎簩涓己闄峰氨涓嶶PnP鐨勫伐浣滄満鐞嗘湁鍏崇郴浜嗭紒
璇ョ己闄峰瓨鍦ㄤ簬UPnP宸ヤ綔鏃剁殑“璁懼鍙戠幇”闃舵銆傚彂鐜拌澶囧彲浠ュ垎涓轟袱縐嶆儏鍐碉細濡傛灉鏌愪釜鍏峰UPnP鍔熻兘鐨勮綆楁満寮曞鎴愬姛騫惰繛鎺ュ埌緗戠粶涓婏紝灝變細绔嬪埢鍚戠綉緇滃彂鍑?#8220;騫挎挱”錛屽悜緗戠粶涓婄殑UPnP璁懼閫氱煡鑷繁宸茬粡鍑嗗灝辯華錛屽湪紼嬪簭璁捐榪欎竴綰у埆涓婄湅錛岃騫挎挱鍐呭灝辨槸涓涓狹-SEARCH錛堟秷鎭級鎸囩ず銆傝騫挎挱灝嗚“澹伴煶鎵鍙?#8221;鑼冨洿涔嬪唴鐨勬墍鏈夎澶囨墍“鍚埌”銆傚茍鍚戣璁$畻鏈哄弽棣堣嚜宸辯殑鏈夊叧淇℃伅錛屼互澶囬殢鍚庤繘琛屾帶鍒朵箣鐢ㄣ?/p>
鐩哥被浼鹼紝濡傛灉鏌愪釜璁懼鍒氬垰榪炴帴鍒扮綉緇滀笂錛屼篃浼氬悜緗戠粶鍙戝嚭“閫氱煡”錛岃〃紺鴻嚜宸卞噯澶囧氨緇紝鍙互鎺ュ彈鏉ヨ嚜緗戠粶鐨勬帶鍒訛紝鍦ㄧ▼搴忚璁¤繖涓綰у埆涓婄湅錛岃閫氱煡灝辨槸涓涓狽OTIFY錛堟秷鎭級鎸囩ず銆備篃灝嗚“澹伴煶鎵鍙?#8221;鑼冨洿涔嬪唴鐨勬墍鏈夎綆楁満鎺ュ彈銆傝綆楁満灝?“鎰熺煡”璇ヨ澶囧凡緇忓悜鑷繁“鎶ュ埌”銆傚疄闄呬笂錛孨OTIFY錛堟秷鎭級鎸囩ず涔熶笉鏄崟鍗曞彂閫佺粰璁$畻鏈哄惉鐨勶紝鍒殑緗戠粶璁懼涔熷彲浠ュ惉鍒般?/p>
灝辨槸鍦ㄤ笂榪扮殑涓鎾竴鍚箣闂達紝鍑虹幇浜嗛棶棰橈紒
濡傛灉鏌愪釜榛戝鍚戞煇涓敤鎴風郴緇熷彂閫佷竴涓狽OTIFY錛堟秷鎭級鎸囩ず錛岃鐢ㄦ埛緋葷粺灝變細鏀跺埌榪欎釜NOTIFY錛堟秷鎭級鎸囩ず騫跺湪鍏舵寚紺轟笅錛岃繛鎺ュ埌涓涓壒瀹氭湇鍔″櫒涓婏紝鎺ョ潃鍚戠浉搴旂殑鏈嶅姟鍣ㄨ姹備笅杞芥湇鍔♀曗曗曚笅杞藉皢瑕佹墽琛岀殑鏈嶅姟鍐呭銆傛湇鍔″櫒褰撶劧浼氬搷搴旇繖涓姹傘俇PnP鏈嶅姟緋葷粺灝嗚В閲婅繖涓澶囩殑鎻忚堪閮ㄥ垎錛岃姹傚彂閫佹洿澶氱殑鏂囦歡錛屾湇鍔″櫒鍙堥渶瑕佸搷搴旇繖浜涜姹傘傝繖鏍鳳紝灝辨瀯鎴愪竴涓?#8220;璇鋒眰鈥曗曞搷搴?#8221;鐨勫驚鐜紝澶ч噺鍗犵敤緋葷粺璧勬簮錛岄犳垚UPnP緋葷粺鏈嶅姟閫熷害鍙樻參鐢氳嚦鍋滄銆傛墍浠ワ紝榪欎釜緙洪櫡灝嗗鑷?#8220;鎷掔粷鏈嶅姟”鏀誨嚮縐頒負鍙兘錛?/p>
緇撴潫璇?/p>
UpnP姝e湪鍚戞垜浠竴姝ユ璧拌繎錛岀幇鍦ㄥ凡緇忔槸瓚沖0鍙椈浜嗐備笉涔呯殑灝嗘潵錛屽繀鐒跺鎴戜滑鐨勫伐浣滃拰鐢熸椿浜х敓宸ㄥぇ褰卞搷銆備篃钑村惈鐫鏃犻檺鍟嗘満銆傚敖綆$幇鍦ㄥ瓨鍦ㄩ棶棰橈紝涔熼毦淇濅互鍚庡氨涓嶄細鍐嶅嚭鐜版柊鐨勯棶棰橈紝浣嗚繖鏃㈢劧浣撶幇浜嗕漢鐨勯渶姹傛剰鍚戯紝灝變細鏈夊法澶х殑鐢熷懡鍔涳紝鏆傛椂鐨勬尗鎶樹笉浼氫嬌寰楀畠鍋滀笅鍓嶈繘鐨勮剼姝ワ紒
Visual Studio 2003/Visual Studio 2005甯哥敤蹇嵎閿?蹇嵎鏂瑰紡)
璋冭瘯蹇嵎閿?/p>
F6: 鐢熸垚瑙e喅鏂規
Ctrl+F6: 鐢熸垚褰撳墠欏圭洰
F7: 鏌ョ湅浠g爜
Shift+F7: 鏌ョ湅紿椾綋璁捐鍣?br />F5: 鍚姩璋冭瘯
Ctrl+F5: 寮濮嬫墽琛?涓嶈皟璇?
Shift+F5: 鍋滄璋冭瘯
Ctrl+Shift+F5: 閲嶅惎璋冭瘯
F9: 鍒囨崲鏂偣
Ctrl+F9: 鍚敤/鍋滄鏂偣
Ctrl+Shift+F9: 鍒犻櫎鍏ㄩ儴鏂偣
F10: 閫愯繃紼?br />Ctrl+F10: 榪愯鍒板厜鏍囧
F11: 閫愯鍙?/p>
緙栬緫蹇嵎閿?/p>
Shift+Alt+Enter: 鍒囨崲鍏ㄥ睆緙栬緫
Ctrl+B,T / Ctrl+K,K: 鍒囨崲涔︾寮鍏?br />Ctrl+B,N / Ctrl+K,N: 縐誨姩鍒頒笅涓涔︾
Ctrl+B,P: 縐誨姩鍒頒笂涓涔︾
Ctrl+B,C: 娓呴櫎鍏ㄩ儴鏍囩
Ctrl+I: 娓愯繘寮忔悳绱?br />Ctrl+Shift+I: 鍙嶅悜娓愯繘寮忔悳绱?br />Ctrl+F: 鏌ユ壘
Ctrl+Shift+F: 鍦ㄦ枃浠朵腑鏌ユ壘
F3: 鏌ユ壘涓嬩竴涓?br />Shift+F3: 鏌ユ壘涓婁竴涓?br />Ctrl+H: 鏇挎崲
Ctrl+Shift+H: 鍦ㄦ枃浠朵腑鏇挎崲
Alt+F12: 鏌ユ壘絎﹀彿(鍒楀嚭鎵鏈夋煡鎵劇粨鏋?
Ctrl+Shift+V: 鍓創鏉垮驚鐜?/p>
Ctrl+宸﹀彸綆ご閿? 涓嬈″彲浠ョЩ鍔ㄤ竴涓崟璇?br />Ctrl+涓婁笅綆ご閿? 婊氬姩浠g爜灞忓箷錛屼絾涓嶇Щ鍔ㄥ厜鏍囦綅緗?br />Ctrl+Shift+L: 鍒犻櫎褰撳墠琛?br />Ctrl+M,M: 闅愯棌鎴栧睍寮褰撳墠宓屽鐨勬姌鍙犵姸鎬?br />Ctrl+M,L: 灝嗘墍鏈夎繃紼嬭緗負鐩稿悓鐨勯殣钘忔垨灞曞紑鐘舵?br />Ctrl+M,P: 鍋滄澶х翰鏄劇ず
Ctrl+E,S: 鏌ョ湅絀虹櫧
Ctrl+E,W: 鑷姩鎹㈣
Ctrl+G: 杞埌鎸囧畾琛?br />Shift+Alt+綆ご閿? 閫夋嫨鐭╁艦鏂囨湰
Alt+榧犳爣宸︽寜閽? 閫夋嫨鐭╁艦鏂囨湰
Ctrl+Shift+U: 鍏ㄩ儴鍙樹負澶у啓
Ctrl+U: 鍏ㄩ儴鍙樹負灝忓啓
浠g爜蹇嵎閿?/p>
Ctrl+J / Ctrl+K,L: 鍒楀嚭鎴愬憳
Ctrl+Shift+絀烘牸閿?/ Ctrl+K,P: 鍙傛暟淇℃伅
Ctrl+K,I: 蹇熶俊鎭?br />Ctrl+E,C / Ctrl+K,C: 娉ㄩ噴閫夊畾鍐呭
Ctrl+E,U / Ctrl+K,U: 鍙栨秷閫夊畾娉ㄩ噴鍐呭
Ctrl+K,M: 鐢熸垚鏂規硶瀛樻牴
Ctrl+K,X: 鎻掑叆浠g爜孌?br />Ctrl+K,S: 鎻掑叆澶栦晶浠g爜
F12: 杞埌鎵璋冪敤榪囩▼鎴栧彉閲忕殑瀹氫箟
紿楀彛蹇嵎閿?/p>
Ctrl+W,W: 嫻忚鍣ㄧ獥鍙?br />Ctrl+W,S: 瑙e喅鏂規綆$悊鍣?br />Ctrl+W,C: 綾昏鍥?br />Ctrl+W,E: 閿欒鍒楄〃
Ctrl+W,O: 杈撳嚭瑙嗗浘
Ctrl+W,P: 灞炴х獥鍙?br />Ctrl+W,T: 浠誨姟鍒楄〃
Ctrl+W,X: 宸ュ叿綆?br />Ctrl+W,B: 涔︾紿楀彛
Ctrl+W,U: 鏂囨。澶х翰
Ctrl+D,B: 鏂偣紿楀彛
Ctrl+D,I: 鍗蟲椂紿楀彛
Ctrl+Tab: 媧誨姩紿椾綋鍒囨崲
Ctrl+Shift+N: 鏂板緩欏圭洰
Ctrl+Shift+O: 鎵撳紑欏圭洰
Ctrl+Shift+S: 鍏ㄩ儴淇濆瓨
Shift+Alt+C: 鏂板緩綾?br />Ctrl+Shift+A: 鏂板緩欏?/p>
聽