锘??xml version="1.0" encoding="utf-8" standalone="yes"?>97久久精品人妻人人搡人人玩,欧美亚洲日本久久精品,国产精品欧美久久久久天天影视http://www.shnenglu.com/Error/category/20260.htmlzh-cnTue, 11 Dec 2012 11:26:34 GMTTue, 11 Dec 2012 11:26:34 GMT60setsockopt璇︾粏鏂囨。http://www.shnenglu.com/Error/articles/196183.htmlEnicEnicTue, 11 Dec 2012 09:51:00 GMThttp://www.shnenglu.com/Error/articles/196183.htmlhttp://www.shnenglu.com/Error/comments/196183.htmlhttp://www.shnenglu.com/Error/articles/196183.html#Feedback0http://www.shnenglu.com/Error/comments/commentRss/196183.htmlhttp://www.shnenglu.com/Error/services/trackbacks/196183.html

1.closesocket錛堜竴鑸笉浼氱珛鍗沖叧闂岀粡鍘員IME_WAIT鐨勮繃紼嬶級鍚庢兂緇х畫閲嶇敤璇ocket錛?br />BOOL bReuseaddr=TRUE;
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="background-color: #ffff66; color: black">setsockopt()銆備負浜嗗厑璁窼O_DONTLINGER錛堜害鍗崇姝O_LINGER錛夛紝l_onoff搴旇涓洪浂錛岀劧鍚庤皟鐢?strong style="background-color: #ffff66; color: black">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="background-color: #ffff66; color: black">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



Enic 2012-12-11 17:51 鍙戣〃璇勮
]]>
亚洲а∨天堂久久精品9966| 国内精品久久久久久麻豆| 亚洲人成网站999久久久综合 | 欧美亚洲国产精品久久| 亚洲乱码中文字幕久久孕妇黑人| 精品久久久久久| 乱亲女H秽乱长久久久| 久久这里都是精品| 国产美女久久久| 久久久久亚洲av成人网人人软件| 久久国产成人精品国产成人亚洲| 亚洲欧洲久久久精品| 国产99久久精品一区二区| 亚洲AV无码久久精品蜜桃| 国内精品久久久久久久久电影网 | 久久99精品国产自在现线小黄鸭 | 综合网日日天干夜夜久久 | 香蕉久久夜色精品国产2020| 人妻少妇久久中文字幕一区二区| 久久99精品久久久久久9蜜桃 | 亚洲人成精品久久久久| 久久久这里有精品中文字幕| 久久国产精品无码网站| 久久久久97国产精华液好用吗| 天天爽天天狠久久久综合麻豆| 久久亚洲欧洲国产综合| 久久精品国产精品亚洲精品| 欧美一区二区三区久久综合| 久久午夜免费视频| 精品欧美一区二区三区久久久| 久久精品亚洲精品国产色婷 | 无码精品久久一区二区三区 | 久久99精品久久久久久水蜜桃| 亚洲精品无码久久久久sm| 无码乱码观看精品久久| 性欧美大战久久久久久久| 久久综合九色欧美综合狠狠| 久久天天躁狠狠躁夜夜不卡| 大美女久久久久久j久久| 久久亚洲国产成人影院| 精品久久久一二三区|